时间:2021-05-20
简介
Android给我们提供了一种轻量级的异步任务类AsyncTask。该类中实现异步操作,并提供接口反馈当前异步执行结果及进度,这些接口中有直接运行在主线程中的(如 onPostExecute,onPreExecute等)。
AsyncTask可以轻松正确的使用UI线程,这个类允许你在后台操作,并且不需要使用threads或者handler将结果发布到UI线程。
AsyncTask设计之初就是辅助Thread和Handler的,并且不会生成线程。AsyncTask应该被用于短时间内的操作(最多几秒钟),如果你想要长时间保持线程运行,请使用Executor或者ThreadPoolExecutor或者FutureTask。
AsyncTask在后台运行任务,在UI线程发布结果,定义三个参数,Params, Progress和Result,执行四个步骤,onPreExecute, doInBackground, onProgressUpdate和onPostExecute。
使用方法
AsyncTask必须被继承来使用。子类必须实现至少一个方法(ddoInBackground(Params…)) ,还有一个最常用的方法(onPostExecute(Result) 。
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"); }}启动异步任务:
new DownloadFilesTask().execute(url1, url2, url3);AsyncTasks的范型参数
异步任务使用的参数是:
这三个参数不一定非要指定,可以使用Void来传入空值。
private class MyTask extends AsyncTask<Void, Void, Void> { ... }4个步骤
取消异步任务
任何时候都可以通过调用cancel(boolean)方法来取消任务。
调用此方法将导致对isCancelled()的后续调用返回true。
调用此方法后,onCancelled(Object) ,而不调用onPostExecute(Object)
为了尽可能快地取消任务,应该始终从doInBackground(Object [])中定期检查isCancelled()的返回值(如果可能的话)。
线程规则
内存监控
AsyncTask保证所有回调调用都是同步的,使得以下操作在没有显式同步的情况下是安全的。
执行顺序
首次引入时,AsyncTasks在单个后台线程上串行执行。
从DONUT开始,这被更改为一个允许多个任务并行操作的线程池。
从HONEYCOMB开始,任务在单个线程上执行,以避免并行执行引起的常见应用程序错误。
如果真的需要并行执行,则可以使用THREAD_POOL_EXECUTOR调用executeOnExecutor(java.util.concurrent.Executor,Object []) 。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和《Android开发笔记之:深入理解多线程AsyncTask》
1、Asynctask简介1.1使用方法简介Asynctask作为Android的基础之一,怎么使用就不多讲解了,网上到处都是教程,建议查看Android官方A
本篇资料来于官方文档:http://cn.vuejs.org/guide/components.html#Props本教程是小编结合官方文档整理的一套更加细致,
本文参考官方文档整理的一篇更加细致代码更加安全的一篇适合新手阅读学习吧教程。本篇资料来于官方文档:http://cn.vuejs.org/guide/compo
本文总结分析了Android中异步类AsyncTask用法。分享给大家供大家参考,具体如下:最近整理笔记的时候,看到有关AsyncTask不是很理解,重新疏导了