一身转战三千里,一剑曾当百万师。这篇文章主要讲述Android 源码解析之AsyncTask相关的知识,希望能为你提供帮助。
首先,我们先看看AsyncTask的定义形式:
1 public abstract class AsyncTask< Params, Progress, Result> { }
首先AsyncTask它是一个抽象类,包括三种泛型类型,具体含义如下:
- Params:它表示请求参数的类型
- Progress:执行任务的进度类型
- Result:返回结果的类型
然后我们看看它的执行过程,包括以下几个方法:
- execute(Params... params),我们在执行异步操作时会调用该方法,表示开始执行任务。
- 【Android 源码解析之AsyncTask】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异步任务机制
- Android多线程编程之AsyncTask
- Android毛玻璃模糊化效果处理
- Android 签名比较
- Android之菜单总结
- android开发--多线程
- Android学习笔记(摇一摇功能的实现)
- wemall app商城源码Android之支付宝通知处理类