一个典型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 }

你真的会用AsyncTask吗?(一)的更多相关文章

  1. Android开发者:你真的会用AsyncTask吗?

    [导读]在Android应用开发的过程中,我们需要时刻注意保证应用程序的稳定和UI操作响应及时,因为不稳定或响应缓慢的应用将给应用带来不好的印象,严重的用户卸载你的APP,这样你的努力就没有体现的价值 ...

  2. Android Tips – 填坑手册

    出于: androidChina   http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...

  3. android 开发从入门到精通

    Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...

  4. 阅读 Android源码的一些姿势

    日常开发中怎么阅读源码 找到正确的源码 IDE 是日常经常用的东西,Eclipse 就不说了,直接从 Android Studio(基于 IntelliJ Community 版本改造)开始. 我们平 ...

  5. Android(java)学习笔记149:Android线程形态之 AsyncTask (异步任务)

    1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点        AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...

  6. 使用过AsyncTask、EventBus、Volley以及Retrofit,必须好好了解handler运行机制

    我们都知道在UI线程中不能进行耗时操作,例如数据读写.网络请求.Android 4.0开始,在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadExceptio ...

  7. AsyncTask使用实例,异步加载图片

    在上一篇,详细介绍了AsynTask的基础知识.没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4892310.html 那么在这篇文 ...

  8. Android中AsyncTask的使用 (包含文件的下载与存储)

    今天看到大神写的相关详解Android中AsyncTask的使用,真的很是佩服,下面我将学习到的AsynTask知识运用到项目中,其中也涉及一些文件的下载与存储到本地 啥都不说了,直接上代码,我将对其 ...

  9. Android(java)学习笔记92:Android线程形态之 AsyncTask (异步任务)

    1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点        AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...

随机推荐

  1. js中的this中使用

    请先查看:http://www.jb51.net/article/41656.htm 情况一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global. 情况二:作 ...

  2. jqurey 遍历 div内的所有input单选复选按钮并判断是否选中及Attr(checked)无效的解决

    关于页面前面标签 <ul> @{ foreach (var item in vote) { if (!string.IsNullOrEmpty(item.Img)) { <li cl ...

  3. 【web必知必会】—— 使用DOM完成属性填充

    本文介绍了使用DOM的简单方法实现动态加载图片的功能. 前文介绍了: 1 DOM四个常用的方法 首先看一下效果,初始时是一个相册,可以点击导航,切换图片,并切换下方显示内容: 点击house,可以动态 ...

  4. json_decode详解

    json_decode是php5.2.0之后新增的一个PHP内置函数,其作用是对JSON 格式的字符串进行编码.    json_decode的语法规则:json_decode ( string $j ...

  5. Eclipse字体大小设置

    打开Eclipse,在主界面下Window->Preferences->General->Appearance->Colors and Fonts, 然后在右边展开框Basic ...

  6. Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则

    一般我们在mvc开发过程中,都会碰到这样的问题.页面总是写在Views文件夹下,而且还只能一个Controller的页面只能写在相应的以 Controller名命名的文件夹下.如果我们写到别处呢?那么 ...

  7. Handlebars的使用方法文档整理(Handlebars.js)

    Handlebars是一款很高效的模版引擎,提供语意化的模版语句,最大的兼容Mustache模版引擎, 提供最大的Mustache模版引擎兼容, 无需学习新语法即可使用; Handlebars.js和 ...

  8. 【Matplotlib】 标注细节注意

    相关文档: Artists BBox 由于蓝线和红线的存在,现在刻度标注很难看清楚.我们可以使他们更大,也可以使它们的属性以便使得线呈现半透明的白色背景.这样做我们既可以看到数据也可以看到刻度标注了. ...

  9. python_元组

    元组 元组是用圆括号括起来的,其中的元素之间用逗号隔开.(都是英文半角) >>># 变量引用 str >>> s = "abc" >> ...

  10. ubuntu14.10建立热点wifi分享给手机

    http://jingyan.baidu.com/article/363872ecd8f35d6e4ba16f97.html ubuntu14.10建立热点wifi分享给手机