继承 AsyncTask<Params,Progress,Result>的子类根据需求需要重写以下几个方法:
void onPreExecute()方法
Result doInBackground(Params...params)方法
void onPostExecute(Result...result)方法
void onProgressUpdate(Progress...progress)方法
void onCancelled()方法
其中 doInBackground(Params...params)是必须重写的方法。
AsyncTask 异步处理的基本流程:
1、主线程通过 AsyncTask 子类实例调用 execute(Params params)方法,传入耗时操作需要的
数据
2、主线程执行 AsyncTask 子类的 onPreExecute()方法,用于初始化用户开始任务的界面操
作,
此方法在主线程中运行
3、onPreExecute()方法执行结束后立即执行 AsyncTask 子类的 doInBackground()方法,接收
主线程通过 execute()方法传入的参数,并进行耗时操作的处理,并返回 Result 类型的
结 果由于高版本的系统中约定主线程中不能进行耗时操作,所以 doInBackground()方法
不 是在主线程中运行的
4、doInBackground()方法执行结束立即又主线程执行 onPostExecute(Result result)方法并将
执行返回的结果以参数形式传入 onPostExecute()方法中,onPostExecute()方法中主要执
行更新 UI 的操作
5、在整个过程中还有一个相关的方法 onProgressUpdate(Progress...progress),这个方法是在
主线程调用 publicProgress(Progress...progress)方法时执行的,一般用于通知主线程当前
任务完成的进度。另一个相关方法 onCancelled()方法主要用于取消任务。