自定义一个AsysncTask:
class XXX extends AsysncTask<Params,Progress,Result >{
//方法
...
}
Params:执行AsysncTask时需要传入的参数(如void)
Progress:后台任务执行时,若需要在界面上显示当前进度,则在此参数上指定泛型作为进度单位(如Integer),调用函数publishProgress传到onProgressUpdate方法中处理此数据。
Result:这里指定泛型作为返回值类型(如Boolen)onPostExecute方法接收的数据
经常需要重写的方法有以下四种
1.onPreExecute():调用AsysncTask类时执行调用,主要进行一些界面的初始化。
2.doInBackground(Params):此方法内的所有代码都在子线程中调用。完成后通过return返回结果,返回类型值由上面的Result决定。若进行UI操作,在此调用publishProgress(Progress)方法来完成。
3.onProgressUpdate(Progress):当调用了publishProgress(Progress)时,此方法会被调用,该方法的参数就是publishProgress(Progress)传入的参数,在这个方法中可以进行UI操作。不执行publishProgress则不会调用此方法。
4.onPostExecute(Result):任务完成,通过return返回的时候,调用这个方法。可以用此方法获取返回的数据来进行一些UI操作。
诀窍:doInBackground()执行具体耗时任务,onProgressUpdate()执行UI的更新,onPostExecute()进行任务的收尾。
启动任务:new XXX.execute();
网友评论