Android AsyncTask 简单用法
简介
AsyncTask 是一个轻量级的异步处理类。使用是需继承自该类。可以方便的执行异步任务并且在将进度显示在UI上。
注意事项
AsyncTask只适合处理轻量级的任务即耗时几秒或者几十秒的任务。如果需要长时间执行后台异步任务,可以查阅java.util.concurrent 包中的 Executor, ThreadPoolExecutor 以及 FutureTask等内容。
使用AsyncTask必须创建一个类继承自AsyncTask,至少需要重写doInBackground(params...) 方法执行具体的操作。一般会重写onPostExecute(Result)方法用来执行后台操作以及对后台运行结果进行处理。
AsyncTask 执行的4个阶段
- step1
onPreExecute() 在主线程(UI线程)调用,用于开始任务前的初始化工作。例如显示一个进度条。
- step2
doInBackground(Params...) 后台线程调用,onPreExecute() 执行完之后立即执行。用于执行耗时较长的操作。并且提供publishProgress(Progress...)方法用于显示进度信息。
- step3
onProgressUpdate (Progress...)在主线程(UI线程)调用,用于响应publishProgress(Progress...)方法。
- step4
onPostExecute(Result) 在主线程调用,doInBackground(Params...)方法执行完后立即调用。Result是doInBackground(Params...)方法的返回值。
AsyncTask使用方法
- 构造函数 可以自定义public类型的构造函数,和普通的类没有差别。
- AsyncTask每次使用必须new 一个对象,并且执行excute(Params...)方法。Params参数解释见下文。
参数解释
这三个参数会在类继承时被指定,参数都使用泛型构造。
- Params 后台线程所需要的参数列表,与构造类时所指定的第一个参数类型匹配。
- Progress 后台线程执行过程中发送的进度信息, 与构造类时所指定的第二个参数类型匹配。
- Result 后台线程执行完后的返回值, 与构造类时所指定的第三个参数类型匹配。
代码示例(来自Android Developer)
- Class definition
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
- Use
new DownloadFilesTask().execute(url1, url2, url3);
更多用法AsyncTask AndroidDeveloper
Android AsyncTask 简单用法的更多相关文章
- Android Scroller简单用法
Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...
- Android intent-filter 简单用法
对电话拨号盘的过滤,mainfest配置文件中Activity如下配置: <activity Android:name=".TestActivity" android:lab ...
- Android Scroller简单用法实例
Android里Scroller类是为了实现View平滑滚动的一个Helper 类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(cont ...
- Android Scroller简单用法 --View滚动
转:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中 ...
- Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法
1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面. 这种还是比较简单的类型.因为一个页面也就这种类型. ...
- Android—— ListView 的简单用法及定制ListView界面
一.ListView的简单用法 2. 训练目标 1) 掌握 ListView 控件的使用 2) 掌握 Adapter 桥梁的作用 实现步骤: 1)首先新建一个项目, 并让ADT 自动帮我们创建好活动. ...
- Android Spinner的简单用法。
今天学到的是spinner,就是下拉列表,这可不是ExpandListView哈. 闲话不解释.这是控件,所以先上布局:就不上线性布局了,基本上可以总结出,控件都得在布局里写,写之前嵌个布局就行. & ...
- Android -- AsyncTask 使用和缺陷
一.AsyncTask的基本用法 由于AsyncTask是一个抽象类,所以如果我们想使用它,就必须要创建一个子类去继承它.在继承时我们可以为AsyncTask类指定三个泛型参数,这三个参数的用途如下: ...
- android AsyncTask介绍(转)
android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...
随机推荐
- CSS布局学习笔记之position
CSS知识点 之 position布局 前段时间被同学怂恿,参加了百度前端技术学院的一个小培训,第一个阶段下来学到不少东西.课程的第一个阶段主要是HTML5 和 CSS 基础知识的一个小培训,给出的一 ...
- web.config设置和取值
博客园中有一篇文章对web.config的结构做了很详细的介绍,原文见 http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.htm ...
- hosts.allow和hosts.deny
/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务. 比如SSH服务,我们通常只对管理 ...
- javascript中的克隆
一:节点克隆 var p = document.getElementsByTagName("p")[0]; var cP = p.cloneNode();//克隆p节点 var c ...
- 大视野3562 [SHOI2014]神奇化合物
http://www.lydsy.com/JudgeOnline/problem.php?id=3562 //Accepted 6020 kb 1012 ms //由于题目的特殊要求:然而,令科学家们 ...
- sql的列的说明
<#@ template debug="true" hostspecific="true" language="C#" #> & ...
- c# txt文件的读写
在公司实习,任务不太重,总结一下c#关于txt文件的读写,以便以后有用到的时候可以查看一下.如果有写得不完整的地方还请补充 说明:本人C#水平可能初级都谈不上,高手轻喷,参考:http://www.c ...
- Ubuntu 64位下搭建ADT的种种问题
我使用的adt版本为 adt-bundle-linux-x86_64-20140702.zip 1. Eclipse启动时提示 adb 无法加载动态链接库 libstdc++.so.6 以及 lib ...
- 浅谈javascript中事件冒泡与事件捕获
事件冒泡:一个事件会顺着他的层级一直往上传,一直传到document上为止,即从盒模型上看是从内到外的过程. 例: <!DOCTYPE html><html lang="e ...
- Oracel查询根据部分字段去重复
一般一个表的id是唯一的,如果除去id则会有重复数据,有时做项目时查询要求根据某几个字段去掉重复记录,并且查询保留id 以下是Oracel查询时根据部分字段去重复,例如,查询的字段包括id,Sys,C ...