码迷,mamicode.com
首页 > 移动开发 > 详细

Android 源码解析之AsyncTask

时间:2016-12-05 22:21:52      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:定义   log   包括   效果   async   rac   android   任务   round   

首先,我们先看看AsyncTask的定义形式:

 1 public abstract class AsyncTask<Params, Progress, Result> { } 

首先AsyncTask它是一个抽象类,包括三种泛型类型,具体含义如下:

  • Params:它表示请求参数的类型
  • Progress:执行任务的进度类型
  • Result:返回结果的类型

但是以上三个参数并不是一定必须,在不需要时可以设置为Void,没有返回类型。

然后我们看看它的执行过程,包括以下几个方法:

  • execute(Params... params),我们在执行异步操作时会调用该方法,表示开始执行任务。

  • protected void onPreExecute() {},在调用execute方法后,该方法就会得到执行,它执行在UI线程中,用来初始化一些UI空间等

  • protected abstract Result doInBackground(Params... params);在onPreExecute执行完后将会执行该方法,它执行在后台,并接受一个Params类型的数组参数,用于请求网络,并且它返回一个Result 类型的结果。该方法中可以在执行网络请求的同时更新请求进度,调用publishProgress(Progress... values) 。

  • protected void onProgressUpdate(Progress... values) ,假如在doInBackground方法中调用了publishProgress方法,那么该方法就会得到执行,它是执行在UI线程的,根据values的值不停的更改进度,以达到想要的效果。

  • protected void onPostExecute(Result result),该方法是在doInBackground方法执行完毕后得到执行,可根据doInBackground返回的结果进行后续的UI操作,由此可见它是工作在UI线程中的。

Android 源码解析之AsyncTask

标签:定义   log   包括   效果   async   rac   android   任务   round   

原文地址:http://www.cnblogs.com/chaowang/p/6135441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!