1. 取消,停止
转自:http://blog.youkuaiyun.com/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类之外的对象,若调用不可一定要判断是否为空,切勿出现空指针异常
本文讨论了在使用Android AsyncTask时遇到的问题,即在执行过程中有时无法正确取消任务。通过在doInBackground和onProgressUpdate方法中加入判断是否被取消的逻辑,可以有效地解决这一问题,并避免调用AsyncTask类之外的对象导致的空指针异常。
789

被折叠的 条评论
为什么被折叠?



