AsyncTask用法和异步加载图片

AsyncTask:是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。

AsyncTask (异步任务),从字面上来说,就是在我们的UI主线程运行的时候,异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时的操作放在异步任务当中来执行,并随时将任务执行的结果返回给我们的UI线程来更新我们的UI控件。通过AsyncTask我们可以轻松的解决多线程之间的通信问题。

4个步骤:当我们执行一个异步任务的时候,其需要按照下面的4个步骤分别执行

onPreExecute(): 这个方法是在执行异步任务之前的时候执行,并且是在UI Thread当中执行的,通常我们在这个方法里做一些UI控件的初始化的操作,例如弹出要给ProgressDialog

doInBackground(Params...

params): 在onPreExecute()方法执行完之后,会马上执行这个方法,这个方法就是来处理异步任务的方法,Android操作系统会在后台的线程池当中开启一个worker

thread来执行我们的这个方法,所以这个方法是在worker

thread当中执行的,这个方法执行完之后就可以将我们的执行结果发送给我们的最后一个 onPostExecute

方法,在这个方法里,我们可以从网络当中获取数据等一些耗时的操作

onProgressUpdate(Progess... values): 这个方法也是在UI

Thread当中执行的,我们在异步任务执行的时候,有时候需要将执行的进度返回给我们的UI界面,例如下载一张网络图片,我们需要时刻显示其下载的进度,就可以使用这个方法来更新我们的进度。这个方法在调用之前,我们需要在

doInBackground 方法中调用一个 publishProgress(Progress) 的方法来将我们的进度时时刻刻传递给

onProgressUpdate 方法来更新

onPostExecute(Result... result): 当我们的异步任务执行完之后,就会将结果返回给这个方法,这个方法也是在UI Thread当中调用的,我们可以将返回的结果显示在UI控件上

一个超简单的理解 AsyncTask 的例子:AsyncTask来从网络上下载一张图片



源码下载:https://github.com/DickyQie/AsynTaskDemo.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android开发者:你真的会用AsyncTask吗? 导读.1 在Android应用开发中,我们需要时刻注意保证...
    cxm11阅读 2,729评论 0 29
  • 什么是线程池?为什么要用线程池?Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都...
    stevefat阅读 488评论 0 0
  • AsyncTask 1.简介 AsyncTask允许你执行后台耗时操作,并将结果发布到UI线程。整个实现过程不需要...
    chewbee阅读 1,401评论 0 1
  • AsyncTask 是一个简单实用的多线程异步任务工具类。 Android 开发中经常遇到需要将耗时的操作放到子线...
    HJDaryl阅读 742评论 0 1
  • 我想做只雄鹰 展翅高飞,翱翔蓝天 我想做一叶扁舟 自由飘荡,任游大海 我想做匹骏马 无拘无束,驰骋草原 我想做个雨...
    暮阳春雪阅读 604评论 14 19