android AsyncTask 详细例子
一个典型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)
超时处理 001 import java.util.Timer; 002 import java.util.TimerTask; 003 004 import android.app.Activi ...
- Android -- AsyncTask 使用和缺陷
一.AsyncTask的基本用法 由于AsyncTask是一个抽象类,所以如果我们想使用它,就必须要创建一个子类去继承它.在继承时我们可以为AsyncTask类指定三个泛型参数,这三个参数的用途如下: ...
- android AsyncTask介绍(转)
android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...
- android AsyncTask介绍 转载
http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html AsyncTask和Handler对比 1 ) AsyncTask实 ...
- android AsyncTask介绍 AsyncTask和Handler对比
1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可 ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- linux安装 Android Studio详细教程,支持性较差,需要安装最新底层库内核的linux
安装 Android Studio详细教程 libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 jdk1.8.0_25 android-st ...
- Android MediaCodec 使用例子
Android MediaCodec 使用例子 下面的例子是使用MediaCodec 录制到文件的例子. 1 public class AvcEncoder { private MediaCodec ...
- 我的Android进阶之旅------>Android拍照小例子
今天简单的学习了一下android拍照的简单实现. 当然该程序是个小例子,非常简单,没有什么复杂的操作,但是可以学习到Android 拍照API流程. 1.在布局文件中添加一个 surfaceView ...
随机推荐
- CentOS6.7 用户
1.添加普通用户[root@server ~]# useradd chenjiafa //添加一个名为chenjiafa的用户[root@server ~]# passwd chenjiafa ...
- Maven初识
说说maven,我们每做一个项目,都要往lib目录扔很多jar包,spring的啊hibernate的啊apache的啊等等,这样就会导致很多包不知从哪个角落下载回来的,名称千奇百怪,版本也不明,项目 ...
- 关于ajax网络请求的封装
// 封装的ajax网络请求函数// obj 是一个对象function AJAX(obj){ //跨域请求 if (obj.dataType == "jsonp") ...
- OC基础 NSDate
OC基础 NSDate #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @auto ...
- C# TextBox控件 显示大量数据
串口通信:在使用TextBox空间显示数据时,因为要显示大量的接收到的数据,当数据量大且快速(串口1ms发送一条数据)时,使用+=的方式仍然会造成界面的卡顿(已使用多线程处理),但使用AppendTe ...
- uva 10994 - Simple Addition
//组合数学 //计算sum{i从右往左数的第一个非0数字,p<=i<=q}. #include <cstdio> typedef long long ll; ll sum(l ...
- C#使用itextsharp生成PDF文件
项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET. 网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下: 使用HTML文 ...
- mongodb安装指南
mongodb安装 1.解压mongodb-win32-i386-1.8.1.zip ,创建路径C:\Program Files\mongodb ,将解压后的Bin文件Copy to 此文件夹下 2. ...
- Apache之AllowOverride参数详解
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对 ...
- 很强的PHP图片处理类
/*** 基本图片处理,用于完成图片缩入,水印添加* 当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小* 水印图可以设置跟背景的合并度** Copyright(c) 2005 by ustb ...