关系:

java.lang.Object ↳ android.os.AsyncTask<Params, Progress, Result>

概述:

AsyncTask是Android提供的轻量级异步类;它在后台线程处理耗时的操作然后可以将处理的结果返回给UI线程处理。由于它不涉及到使用Thread和Handler所以简单易用。

用法:

首先上一段Android Developer的代码: privateclassDownloadFilesTaskextendsAsyncTask<URL, Integer, Long>{
protectedLong doInBackground(URL... urls) {
intcount=urls.length;
longtotalSize=0;
for(inti=0; i<count; i++) {
totalSize+=Downloader.downloadFile(urls[i]);
publishProgress((int) ((i/(float) count)*100));
// Escape early if cancel() is called
if(isCancelled())break;
}
returntotalSize;
}

protectedvoidonProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}

protectedvoidonPostExecute(Long result) {
showDialog("Downloaded "+result+" bytes");
}
}
//执行方式 // new DownloadFilesTask (). execute ( url1 , url2 , url3 ); 下面我们看一下具体的用法。

1.构建一个类继承AsyncTask

需要注意的是AsyncTask的三中泛型类型 Params 启动任务执行的输入参数,比如HTTP请求的URL。 Progress 后台任务执行的百分比。 Result 后台执行任务最终返回的结果,比如String。

2.至少实现​ doInBackground (Params... params)这个方法

让我们看一下doInBackground这个方法。 protectedabstractResult doInBackground (Params... params) 它接收类型为Params的若干参数,然后返回类型为Result的结果。

3.一般还会实现至少一个 onPostExecute (Result result)方法

protectedvoidonPostExecute (Result result) 它在doInBackground之后被执行,参数就是doInBackground返回的结果。

The 4 steps:

1.onPreExecute()

在AsyncTask被execute之前被执行,一般是做一些准备工作

2.doInBackground(Params...)

在onPreExecute()执行完之后执行,后台线程执行耗时操作

3.onProgressUpdate(Progress...)

在UI线程中执行。在 publishProgress(Progress...)被调用之后执行

4.onPostExecute(Result)

在UI线程中执行,在doInBackground()执行之后执行

Tips:

1.AsyncTask需要在UI线程中加载 2.构建AsyncTask的子类需要在UI线程中 3.execute方法需要在UI线程中被调用 4.对于"The 4 steps"中的四个函数不要自己手动去调用 5.每个task对象只能被execute一次,不然会报异常


更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 深入理解Android消息处理系统
  3. Android(安卓)UI设计:Notification
  4. ContentProvider组件详细的使用方法
  5. Android中SurfaceView简单使用
  6. android 拍照截取 部分照片(拍照截取行驶证)
  7. 自定义activity启动退出效果
  8. Android/java http多线程断点下载(附源码)
  9. Android中如何实现定时任务

随机推荐

  1. 工作笔记之编译android时切换JDK
  2. android ftp案例分析
  3. android中Activity实现再按一次退出
  4. 简析Android中LruCache缓存类
  5. 苹果为“制裁”亚马逊,禁止Kindle应用内购
  6. android退出activity提示再按一次返回键
  7. eclipse Missing Constraint: Bundle-Req
  8. Android验证码倒计时功能实现
  9. android 安装app私有存储目录下的apk
  10. 微信Android客户端架构演进之路-简单总结