如何在Fragment中取消AsyncTask

时间:2014-12-21 12:31:43

标签: android android-fragments android-asynctask

我创建了一个Android应用程序,因为我想取消片段的AsyncTask onPause状态。

我尝试使用AsyncTask.cancel(true);,但它会给出空指针异常。

@Override
public void onPause()
{
    super.onPause();
    AsyncTask.cancel(true);
}

感谢。

2 个答案:

答案 0 :(得分:0)

task.cancel()会这样做。请务必经常检查isCancelled()以及onBackground()中的onPostExecute(),以避免访问/更新不再存在的用户界面。

public void onActivityPause() {
    task.cancel();
}

答案 1 :(得分:0)

asyncTask.cancel(真);将仅更改布尔值,并且不会停止您的线程。 所以你需要“询问”异步任务是否未被取消。

示例:

@Override
protected Void doInBackground(Void... params) {
    while(!isCancelled()){
        // do something
    }
    return null;
}