AsyncTask简单入门
16lz
2021-01-26
关系:
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一次,不然会报异常更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- 深入理解Android消息处理系统
- Android(安卓)UI设计:Notification
- ContentProvider组件详细的使用方法
- Android中SurfaceView简单使用
- android 拍照截取 部分照片(拍照截取行驶证)
- 自定义activity启动退出效果
- Android/java http多线程断点下载(附源码)
- Android中如何实现定时任务