文章目录
  1. 1. 简单介绍
  2. 2. 实例

简单介绍

本篇介绍在Android中进行耗时操作使用AsyncTask异步类的方法。使用Jsoup方法快捷获取联网返回的html代码,例子是获取湖南文理学院班级课表选择页面的html代码,以后篇章将介绍抓包获取数据,使用Jsoup获取返回的html代码解析比较方便,可以很快捷的将网页上需要的信息获取筛选后放到手机上。

实例

主类,通过调用异步任务类的构造方法传参进行处理,处理完后在Handler中进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.carlos.asynctask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView textview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textview=(TextView) findViewById(R.id.textview);
String url="http://www.huas.cn:83/jwweb/ZNPK/KBFB_ClassSel.aspx";
TestTask task=new TestTask(MainActivity.this, handler);
task.execute(url);

}

Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if (msg.what==1) {
String result=msg.getData().getString("result");
textview.setText(result);
}
};
};
}

异步任务工具类,使用Jsoup快捷获取返回的html代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.carlos.asynctask;

import java.io.IOException;

import org.jsoup.Jsoup;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

public class TestTask extends AsyncTask<String, Void, String>{

private Context context;
private Handler handler;
private ProgressDialog dialog;

//创建字段构造方法
public TestTask(Context context, Handler handler) {
super();
this.context = context;
this.handler = handler;
}

//后台操作前的准备工作
protected void onPreExecute() {
//进行后台处理前显示一个圆形对话框进行友好提示,后台操作完毕后取消对话框。
dialog=ProgressDialog.show(context, "", "数据加载中,请稍后..",true,true);
}

//后台处理耗时操作
protected String doInBackground(String... arg0) {
String result = null;
try {
result = Jsoup.connect(arg0[0]).get().toString();
Log.i("联网获取到的html源代码", result);
} catch (IOException e) {
e.printStackTrace();
}
return result;
}

//后台操作执行完毕后可在此进行处理
protected void onPostExecute(String result) {
Message message=new Message();
Bundle bundle=new Bundle();
bundle.putString("result", result);
message.setData(bundle);
message.what=1;
handler.sendMessage(message);
dialog.dismiss();
}

}

Logcat日志中打印出的结果

Genymotion模拟器中显示的结果

文章目录
  1. 1. 简单介绍
  2. 2. 实例