你真的会用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 |
} |
你真的会用AsyncTask吗?(一)的更多相关文章
- Android开发者:你真的会用AsyncTask吗?
[导读]在Android应用开发的过程中,我们需要时刻注意保证应用程序的稳定和UI操作响应及时,因为不稳定或响应缓慢的应用将给应用带来不好的印象,严重的用户卸载你的APP,这样你的努力就没有体现的价值 ...
- Android Tips – 填坑手册
出于: androidChina http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...
- android 开发从入门到精通
Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...
- 阅读 Android源码的一些姿势
日常开发中怎么阅读源码 找到正确的源码 IDE 是日常经常用的东西,Eclipse 就不说了,直接从 Android Studio(基于 IntelliJ Community 版本改造)开始. 我们平 ...
- Android(java)学习笔记149:Android线程形态之 AsyncTask (异步任务)
1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点 AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...
- 使用过AsyncTask、EventBus、Volley以及Retrofit,必须好好了解handler运行机制
我们都知道在UI线程中不能进行耗时操作,例如数据读写.网络请求.Android 4.0开始,在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadExceptio ...
- AsyncTask使用实例,异步加载图片
在上一篇,详细介绍了AsynTask的基础知识.没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4892310.html 那么在这篇文 ...
- Android中AsyncTask的使用 (包含文件的下载与存储)
今天看到大神写的相关详解Android中AsyncTask的使用,真的很是佩服,下面我将学习到的AsynTask知识运用到项目中,其中也涉及一些文件的下载与存储到本地 啥都不说了,直接上代码,我将对其 ...
- Android(java)学习笔记92:Android线程形态之 AsyncTask (异步任务)
1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点 AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...
随机推荐
- 通过爬虫代理IP快速增加博客阅读量——亲测CSDN有效!
写在前面 题目所说的并不是目的,主要是为了更详细的了解网站的反爬机制,如果真的想要提高博客的阅读量,优质的内容必不可少. 了解网站的反爬机制 一般网站从以下几个方面反爬虫: 1. 通过Headers反 ...
- [USACO2005][POJ2226]Muddy Fields(二分图最小点覆盖)
题目:http://poj.org/problem?id=2226 题意:给你一个字符矩阵,每个位置只能有"*"或者“.",连续的横着或者竖的“*"可以用一块木 ...
- [C#]MemoryStream.Dispose之后,为什么仍可以ToArray()?
目录 概述 MemoryStream分析 总结 概述 事件起因,一哥们在群里面贴出了类似下面这样的一段代码: class Program { static void Main(string[] arg ...
- JavaScript基础---语言基础(4)
函数,对象和数组 学习要点: 1.函数声明 2.return返回值 3.arguments对象 4.Object类型 5.Array类型 6.对象中的方法 函数是定义一次但却可以调用或执行任意多次的一 ...
- AngularJS开发指南15:AngularJS的创建服务,将服务注入到控制器,管理服务依赖详解
创建服务 虽然AngularJS提供了很多有用的服务,但是如果你要创建一个很棒的应用,你可能还是要写自己的服务.你可以通过在模块中注册一个服务工厂函数,或者通过Module#factory api或者 ...
- 第一节Unity3D简介
Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎.Unity ...
- 更新java对xml文件的操作
//更新java在xml文件中操作的内容 public static void upda(Document doc) throws Exception{ //创建一个TransformerFactor ...
- VS中两个常用辅助工具
一. 首当推荐的是DPack 下载地址:http://www.usysware.com/dpack/ 快捷键:以下都是个人常用的热键.其他还有,我都用得比较少了,3个已经完全够了 Alt+U 查找 ...
- Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...
- opencv笔记6:角点检测
time:2015年10月09日 星期五 23时11分58秒 # opencv笔记6:角点检测 update:从角点检测,学习图像的特征,这是后续图像跟踪.图像匹配的基础. 角点检测是什么鬼?前面一篇 ...