android AsyncTask 详细例子
来源:互联网 发布:centos ftp指定目录 编辑:程序博客网 时间:2024/06/03 13:58
一个典型AsyncTask的。
01
public
class
DialogTestActivity
extends
Activity {
02
private
Button button1;
03
private
Task task;
04
05
@Override
06
public
void
onCreate(Bundle savedInstanceState) {
07
super
.onCreate(savedInstanceState);
08
setContentView(R.layout.main);
09
this
.button1 = (Button) findViewById(R.id.button1);
10
button1.setOnClickListener(
new
View.OnClickListener() {
11
12
@Override
13
public
void
onClick(View v) {
14
if
(task !=
null
&& task.getStatus() == AsyncTask.Status.RUNNING) {
15
Toast.makeText(DialogTestActivity.
this
,
"task 正在运行"
, Toast.LENGTH_SHORT).show();
16
//task.cancel(true); // 如果Task还在运行,则先取消它
17
}
else
{
18
task =
new
Task();
19
task.execute();
20
}
21
}
22
});
23
}
24
25
@Override
26
protected
void
onDestroy() {
27
super
.onDestroy();
28
// 用户按回退的时候要取消正在进行的任务
29
task.cancel(
true
);
30
}
31
32
private
class
Task
extends
AsyncTask<Void, Void, Void> {
33
34
@Override
35
protected
void
onPreExecute() {
36
super
.onPreExecute();
37
Toast.makeText(DialogTestActivity.
this
,
"task 开始运行"
, Toast.LENGTH_SHORT).show();
38
}
39
40
@Override
41
protected
Void doInBackground(Void... params) {
42
try
{
43
// 模拟耗时操作 比如网络连接等
44
Thread.sleep(
5000
);
45
}
catch
(InterruptedException e) {
46
e.printStackTrace();
47
}
48
// 判断如果task已经cancel就没有必须继续进行下面的操作
49
if
(!isCancelled()) {
50
System.out.println(
"task 如果被cancel,就不会显示"
);
51
}
52
return
null
;
53
}
54
55
@Override
56
protected
void
onPostExecute(Void result) {
57
super
.onPostExecute(result);
58
Toast.makeText(DialogTestActivity.
this
,
"task 完成"
, Toast.LENGTH_SHORT).show();
59
// 所有调用当前context的对象要注意判断activity是否还存在
60
// 典型的比如弹窗
61
if
(!isFinishing()) {
62
try
{
63
createAlertDialog().show();
64
}
catch
(Exception e) {
65
}
66
}
67
}
68
69
@Override
70
protected
void
onCancelled() {
71
super
.onCancelled();
72
System.out.println(
"task 取消"
);
73
}
74
75
}
76
77
private
AlertDialog createAlertDialog() {
78
return
new
AlertDialog.Builder(DialogTestActivity.
this
).setTitle(
"fadfasdf"
)
79
.setPositiveButton(
"OK"
,
new
DialogInterface.OnClickListener() {
80
public
void
onClick(DialogInterface dialog,
int
whichButton) {
81
82
}
83
}).setNegativeButton(
"Cancel"
,
new
DialogInterface.OnClickListener() {
84
public
void
onClick(DialogInterface dialog,
int
whichButton) {
85
86
}
87
}).create();
88
}
89
}
- android AsyncTask 详细例子
- android AsyncTask 详细例子(2)
- android AsyncTask 例子
- android中的AsyncTask例子
- Android AsyncTask 详细解析
- Android AsyncTask 详细解析
- Android AsyncTask 详细解析
- 【android】AsyncTask 详细介绍
- Android AsyncTask详细介绍
- Android新手不能错过的AsyncTask例子
- Android消息机制六---AsyncTask例子
- AsyncTask例子
- 【Android杂谈】AsyncTask的详细使用解析
- Android中的WebView详细例子
- android AsyncTask下载并更新进度条运用例子
- android对handler及asynctask的一个例子
- 老罗Android(19)AsyncTask下载图片例子
- Android AsyncTask介绍和一个简单的小例子
- webshell之复杂版本jsp
- Android 异步操作AsyncTask
- HDU 1009 Fatmouse’s trade
- HDU 4379 The More The Better
- Android设置定时执行执行一次任务
- android AsyncTask 详细例子
- Myeclipse 性能优化
- android AsyncTask 详细例子(2)
- LAMP--系统、平台、数据库和程序
- 命令行形式下的Qt实现编译连接
- HDU 1050 moving table
- 解决如何让AsyncTask终止操作
- OS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用
- Android源码中屏幕截图的实现