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 ...
随机推荐
- 深入浅出 RPC - 浅出篇
近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用.在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序员会感觉 RPC 比较神 ...
- java 位运算权限管控(转载)
这里笔者介绍一种很常用,也比较专业的权限控制思路.这里用java语言描述,其实都差不多的.要换成其他的语言主,自己转一下就可以了.为了方便起见,我们这里定义a^b为:a的b次方.这里,我们为每一个操作 ...
- 常见Oracle数据库问题总结及解决办法(一)
开发中常使用Oralce数据库,使用中也许会碰到形形色色的各类错误提示,如:ORA-00933:SQL命令未正确结束.ORA-009242等等,为此记录积累对于自己来说还是很有帮助的,今天就记录以前出 ...
- CGRectInset CGRectoffset UIEdgeInsetsInsetRect 这三个函数的使用情况
//CGRectInset 将原来的矩形放大或者缩小,正表示缩小,-表示放大. CGRect rect= CGRectMake(20, 50, 100, 80); CGRect rect1=CGRec ...
- MVC-生成验证码
1.在网上可以随便找一个生成验证码的类例如: using System; using System.Drawing; using System.Drawing.Imaging; using Syste ...
- arm get_vector_swi_address
unsigned long* get_vector_swi_addr() { const void *swi_addr = 0xFFFF0008; unsigned ; unsigned ; unsi ...
- JS获取select的值
记录一下JS获取select的value值和选项值 <select id="video_status"> <option value="1" ...
- GCD使用经验与技巧浅谈--备
GCD(Grand Central Dispatch)可以说是Mac.iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧. dispatch_once_t必须是全局或static变量 ...
- vi使用入门指南
一.Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件.Unix及其相似的ix操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑 ...
- SharedPreferences数据、openFileOutput文件、SQLite数据库文件存储位置
在模拟器中: SharedPreferences将XML文件保存在/data/data/<package name>/shared_prefs目录下, openFileOutput方法将文 ...