手记

Android里的AsyncTask异步机制

.AsyncTask:子线程不能更新UI:因此在一些下载任务需要进度更新,文件读取等耗时操作,如果全部放到主线程去执行,就可能会造成后面任务的阻塞,所以使用AsyncTask进行异步操作

AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承.继承AsyncTask需要指定如下三个泛型参数:

Params:启动任务时输入的参数类型.Progress:后台任务执行中返回进度值的类型.Result:后台任务执行完成后返回结果的类型.(可为Boolean判断成功失败)

.构建AsyncTask子类的回调方法

AsyncTask有以下可重写方法(doInBackground必须重写,其余可写可不写):

doInBackground(Params):异步执行后台线程任务,耗时操作将在此方法中完成.onPreExecute():执行后台任务前被调用,通常用于进行初始化操作.onProgressUpdate(Progress)::当doInBackground()方法中调用publishProgress(Progress)方法后,将自动调用此方法.通过此方法我们可以更新任务的进度,可通过此方法进行UI的更新.onPostExecute(Result)::当doInBackground()方法完成后,系统将自动调用此方法,并将doInBackground方法返回的值(即Result),此方法可以进行UI更新,如任务完成关闭进度条等

 原文出处


0人推荐
随时随地看视频
慕课网APP