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 ...
随机推荐
- SQL数值函数
/*abs(n)返回参数n所指定数值的绝对值(如果参数值为NULL,则返回结果为NULL,下同).*/--SELECT ABS(-3.14) FROM DUAL; --3.14 /*round(n[, ...
- 【iOS开发-从网络上获取图片尺寸】
实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...
- Eclipse Removing obsolete files from server 问题
今天在修改server.xml调试程序时,遇到下面这个问题,clean,重启都不好使. Removing obsolete files from server.. ...
- .NET基础拾遗(7)多线程开发基础4
一.多线程编程中的线程同步 1.C#中的lock关键字 lock关键字可能是我们在遇到线程同步的需求时最常用的方式,但lock只是一个语法糖,为什么这么说呢,下面慢慢道来. (1)lock的等效代码其 ...
- Image控件的简单使用示例1
Image控件加载图片包括加载动态图片,加载静态图片两种方式.一.加载动态图片通过生成一个BitmapImage,创建该对象后,赋给Image的Source即可.加载的形式: 示例1 BitmapIm ...
- Dom4j 添加 / 更新 / 删除 XML
1.获得文档 /** *1.获得解析流 *2.解析XML */ 2.添加 /** *1.获取父元素 *2.创建元素 *3.创建属性并添加到元素中 *4.元素添加到根节点 */ 3.更新 /** *1. ...
- nginx 配置文件解析(一)
nginx.conf user nginx; # nginx服务的运行用户 worker_processes ; # 启动进程数,通常设置成和CPU的数量相等 error_log /var/log/n ...
- Web项目中JSP页面的一种调试方法与出现的问题 -- SpringMVC架构测试
在前端开发中,尤其是MVC架构多人开发,负责前端的童鞋总是需要做静态页面,再和后台连接前无法使用变量如EL表达式等测试功能,所以本人引入了一个模板jsp数据测试专用文件,专门配置所有的变量,然后在待测 ...
- Ftp连接错误
FTP连接上传 文件报错 windows无法访问此文件夹.请确保输入的文件名是否正确,并且您有权访问此文件.. 解决办法 : IE设置为脱机使用,文件浏览器登录ftp时调用IE浏览器,所以无法连接, ...
- spring的定时任务或者说自动任务
http://kevin19900306.iteye.com/blog/1397744 //这个是别人的博客 引入除spring.jar外的Quartz的jar包quartz-all-1.8. ...