【问题标题】:How to cancel AsyncTask in Fragment如何在 Fragment 中取消 AsyncTask
【发布时间】:2014-12-21 12:31:43
【问题描述】:

我已经创建了一个 Android 应用程序,我想取消 Fragment 的 AsyncTask onPause 状态。

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

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

谢谢。

【问题讨论】:

标签: android android-fragments android-asynctask


【解决方案1】:

task.cancel() 会做到的。请务必在您的 onBackground()onPostExecute() 中包含对 isCancelled() 的频繁检查,以避免访问/更新不再存在的 UI。

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

【讨论】:

    【解决方案2】:

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

    示例:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多