一个典型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. Unity Networking API文档翻译(一):Networking概述

    写在翻译前的话:      我使用过Photon,研究过Ulink这些Unity提供的多人在线游戏服务器组件,这些商业组件虽然很好很强大.但是对于一个独立开发者来说,4000多软妹币还是点多.总想找一 ...

  2. (旧)子数涵数·Flash——遮罩动画

    一.打开Flash,并新建一个flash文档 二.然后,用矩形工具,快捷键R,绘制一个背景图 三.新建一个图层 四.右击刚刚新建的"图层2"图层,选择"遮罩层" ...

  3. [BZOJ2038]小Z的袜子(莫队算法)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 分析:莫队算法 莫队算法是一种思想…… 处理问题:不带修改的区间询问 使用要求:[l-1 ...

  4. [vijos1264]神秘的咒语(LCIS)

    描述身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底.据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法术, ...

  5. WEB前端开发规范

    WEB前端开发规范 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档.本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改. 基本 ...

  6. 最新 Sublime Text3 激活码 (Build 3114 有效)

    今天打开Sublime Text 3 有更新,更新了一下然后之前的激活就失效了.无奈只好重新搜索可用的激活码.不过幸运的是我搜索到了很多可用的激活码,不敢独专. // Sublime Text 3 L ...

  7. Java基础-多线程

    介绍 操作系统能同时运行几个程序,每个独立运行的程序又称之为进程. 对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程.线程提供了多任务处理的能力 用进程和线程的观点来研究软件是当今普遍采 ...

  8. c#截图

    private void Form_Load(object sender, EventArgs e){  //接收web url  string colle = string.Empty;  stri ...

  9. POJ1364 King

    Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen p ...

  10. groovy-正则表达式

    Groovy使用~”pattern” 来支持正则表达式,它将使用给定的模式字符串创建一个编译好的Java Pattern 对象.Groovy也支持 =~(创建一个Matcher)和 ==~ (返回bo ...