1. 取消,停止
转自:http://blog.csdn.net/cuiweijie3/article/details/8664001
在执行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类之外的对象,若调用不可一定要判断是否为空,切勿出现空指针异常