AsyncTask异步任务

2016-09-25  本文已影响0人  A_Coder

构建AsyncTask子类的参数

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

params:启动任务是输入参数的类型;

progress:后台任务执行中返回;

Result:后台执行任务完成后返回结果的类型;

构建AsyncTask子类的回调方法

doInbackGround:必须重写,异步执行后台线程将要完成的任务;

OnPreExecute:执行后台耗时操作前被调用,通常完成一些初始化操作;

OnPostExecute:当doInBackground完成后,系统自动调用该方法,并将doInBackground方法返回的值传递给该方法;

OnProgressUpdate:在doInBacground()方法调用publicProgress()方法更新任务的执行进度后,就会触发该方法;


结束AsyncTask:

当进度条在加载更新是退出Activity,需要让AsynTask的生命周期跟Activity的生命周期保持一致。

//Activity.class

@ovrrived

public void pause(){

      super.pause();

     if(mAsyncTask != null   &&  mAsyncTask.getStatus() == AsyncTask.status.Running)  {

                     mAsyncTask.cancel(true);

             }

}.

//将对应的AsyncTask标志为Cancel状态,并不是真正的取消,故需要在doInBackground()判断cancel状态

//AsyncTask子类

public void doInBackground(void...params) {

      ...

     if(isCancel()) {

           return;

     }

     mProgress.setProgress(params[0]);

}

//这样就能尽早结束当前线程的任务

注:AsyncTask底层是通过线程池进行调用的

上一篇 下一篇

猜你喜欢

热点阅读