AsyncTask使你可以在你的界面上执行异步工作。它在一个工作线程中执行耗时操作然后把结果传给界面线程,不需要你亲自去管理线程和句柄。
要使用它,你必须从AsyncTask派生一个类并实现回调方法doInBackground(),此方法在一个后台的线程池中运行。要更新你的界面,你应实现onPostExecute(),它把doInBackground()的结果弄过来并在界面线程中运行,于是你可以安全地更新你的界面。你可以在界面线程中调用execute()来执行AsyncTask任务。
例如,你可以把上一章中的例子用AsyncTask实现:
现在界面变得安全并且代码变得简单了。因为把工作分成了在工作线程中完成的部分和在界面线程中完成的部分。
你应该阅读AsyncTask的参考来完全理解如何使用这个类。这里是一个对它如何工作的概览:
-
你可以使用范型指定参数的类型,进度值,和任务的最终值。
-
方法doInBackground()自动在工作线程中执行
-
onPreExecute(),onPostExecute(),
和onProgressUpdate()都在界面线程中执行
-
doInBackground()返回的值被传递到onPostExecute()
-
你可以在任何时刻在doInBackground()中调用publishProgress()引起在界面线程中执行onProgressUpdate()
-
你可以在任意时刻在任何线程中取消任务
警告:另一个你在使用工作线程时可能遇到的问题是activity的意外重启(比如屏幕的方向变了),这可能销毁你的工作线程。要了解如何才能在此类现象发生时避免你的任务被杀以及如何在activity死亡时正确的取消你的任务,请参阅Shelves例子的源码。
分享到:
相关推荐
android:AsyncTask实现异步处理任务.pdf
这是Pro Android学习系列中AsyncTask部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512
Android学习笔记(三二):线程:后台异步任务AsyncTask_IT168文库
Android Asynctask 先小试牛刀,了解一下各个方法执行过程,关注博客http://himici.com/
12_Android 多线程AsyncTask详解
Android学习笔记(三二):线程:后台异步任务AsyncTask
rxjava2 线程间流式处理 asynctask
Android异步处理二:使用AsyncTask异步更新UI界面。
AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和《Android开发笔记之:深入理解多线程AsyncTask》这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小...
Android线程,线程池,AsyncTask,HandlerThread和IntentService的用法demo
详解Android中AsyncTask的使用。
【Android 开发】: AsyncTask 详解 http://blog.csdn.net/ahuier/article/details/16953793
Android_AsyncTask_详解
Android AsyncTask的简单Demo,对应Blog文章:http://blog.csdn.net/dolacmeng/article/details/50215519
在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html
compile ' com.label305:asynctask:x.x.x. ' SimpleAsyncTask 在执行不会引发检查的Exception工作时使用SimpleAsyncTask : public class MyAsyncTask extends SimpleAsyncTask< String> { @Override protected...
AsyncTask 异步多线程加载Demo
Android中AsyncTask实现多线程计数,UI主线程运行,启动另一个线程计数并在UI主线程上显示.