AFF110606_AsyncTask异步任务
目标:
了解AysncTask类和实现。
Android为了降低异步操作开发难度,在handler基础上提供AsyncTask。是一个峰值过的后台任务类。
明了它和Handler谁更轻量级?
Handler更轻量级,只发消息;
AysncTask不仅开新线程,还用线程池,更耗资源。代码操作更轻量级。
如何使用AsyncTask
doInBackground()
onProgressUpdate()
onPostExecute()
AsyncTask定义了三种泛型Params,Progress,Result
Params,启动任务执行的输入参数,比如HTTP请求的URL.
Progress,后台任务执行的百分比。
Result,后台执行任务最终返回的结果,比如String
AsyncTask方法:
必选方法:
doInBackground
onPostExecute
可选方法:
onProgressUpdate
onPreExecute
onCancelled
AsyncTask三个状态:pending,running,finished
使用AsyncTask类,遵守的准则:
Task的实例必需在UI thread中创建;
execute方法必需在UI thread中调用;
不要手动调用onPreExecute,onPostExecute,doInBackground,onProgressUpdate这几个方法;
该task只能被执行一次,多次调用时将会出现异常。
看代码AsyncTask.java:
1 找入口:构造函数
2 找关系:调用,被调用
构造函数创建FutureTask
execute()中启动FutureTask
sExecuter,线程池。典型的线程池结构用法。
重难:
AsyncTask与县城和线程池的关系
如何分析进程的内存占用
考核:
AsyncTask是多线程么?是,线程池
与Handler相比,AsyncTask消耗资源情况如何,为什么?
更多。新线程,线程池。