取消AsyncTask

在执行AsyncTask程序的时候,调用cancel(true)有时会出现AsyncTask没有及时取消的情况,最有效的方法是在doInBackground方法里判断一下:


...

@Override
public void onProgressUpdate(Integer... value) {
// 判断是否被取消

if(isCancelled()) return;
.........
}


@Override
protected Integer doInBackground(Void... mgs) {

// Task被取消了,马上退出循环
if(isCancelled()) return null;

.......

// Task被取消了,马上退出循环
if(isCancelled()) return null;

}

...


取消此线程方法

if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) {
task.cancel(true);
}


在执行的过程中,切勿调用AsyncTask类之外的对象,若调用不可一定要判断是否为空,切勿出现空指针异常


你可能感兴趣的:(AsyncTask)