一个典型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 详细例子的更多相关文章

  1. android AsyncTask 详细例子(2)

    超时处理 001 import java.util.Timer; 002 import java.util.TimerTask; 003   004 import android.app.Activi ...

  2. Android -- AsyncTask 使用和缺陷

    一.AsyncTask的基本用法 由于AsyncTask是一个抽象类,所以如果我们想使用它,就必须要创建一个子类去继承它.在继承时我们可以为AsyncTask类指定三个泛型参数,这三个参数的用途如下: ...

  3. android AsyncTask介绍(转)

    android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...

  4. android AsyncTask介绍 转载

    http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html AsyncTask和Handler对比 1 ) AsyncTask实 ...

  5. android AsyncTask介绍 AsyncTask和Handler对比

    1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可 ...

  6. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  7. linux安装 Android Studio详细教程,支持性较差,需要安装最新底层库内核的linux

    安装 Android Studio详细教程 libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 jdk1.8.0_25 android-st ...

  8. Android MediaCodec 使用例子

    Android MediaCodec 使用例子 下面的例子是使用MediaCodec 录制到文件的例子. 1 public class AvcEncoder { private MediaCodec ...

  9. 我的Android进阶之旅------>Android拍照小例子

    今天简单的学习了一下android拍照的简单实现. 当然该程序是个小例子,非常简单,没有什么复杂的操作,但是可以学习到Android 拍照API流程. 1.在布局文件中添加一个 surfaceView ...

随机推荐

  1. ViewDragHelper详解

    2013年谷歌i/o大会上介绍了两个新的layout: SlidingPaneLayout和DrawerLayout,现在这俩个类被广泛的运用,其实研究他们的源码你会发现这两个类都运用了ViewDra ...

  2. Sybase datetime 时间转换格式 convert(varchar(10),字段名,转换格式)

    convert(varchar(10),字段名,转换格式)sybase下convert函数第三个参数(时间格式)比如:1.select user_id,convert(varchar(10),dayt ...

  3. Tooltip(提示框)组件

    一.加载方式 //class加载方式 <a href="http://www.ycku.com" title="这是一个提示信息!" class=&quo ...

  4. 前端笔试题目小结--获取输入参数用户名;查询URL字符串参数

    编写一个JavaScript函数getSuffix,用于获得输入参数的后缀名.如输入abc.txt,返回txt. str1 = "abc.txt"; function getSuf ...

  5. Discuz!NT 3.5.2正式版与Asp.net网站会员信息整合

    Discuz!NT 提供了很多对外的接口利于与别的网站进行整合,经本人亲测,觉得开放的接口还是挺到位的.开发.测试一次通过,只不过api文档寻找无门,只能自己琢磨,费了不少周折,不过,功夫不负有心人, ...

  6. VS2012 编写C++程序的时候DOS窗口一闪而过解决办法。

    在我每次通过VS2012 运行C++程序的时候,DOS窗口在显示结果的时候都是一闪而过.这样让人没法观察输出的结果.经试验找到了一较好的解决办法: 首先包含头文件"stdlib.h" ...

  7. uva 260 - Il Gioco dell'X

    题解: 一定有人获胜,非黑即白:获胜条件为:black是由 上走到下,white是由 左走到右: #include <cstdio> using namespace std; int N; ...

  8. Hadoop学习历程(二、配置)

    以下是进行单节点Hadoop配置的内容,多节点也类似 1. 进行Hadoop的安装 1.1 上文进行了Hadoop的编译,将编译结果目录 hadoop-2.2.0 拷贝为 /usr/hadoop 目录 ...

  9. 程序设计C 实验三 题目九 方程式(0300)

    Description: Consider equations having the following form: a*x1*x1 + b*x2*x2 + c*x3*x3 + d*x4*x4 = 0 ...

  10. IOS 播放音频流媒体

    #pragma mark - 加载播放数据 - (void)loadData:(NSString *)musicUrl { NSURL *playURL = [NSURL URLWithString: ...