我想知道什么是停止异步任务frm运行的最佳方法。
我试过了

@Override protected void onCancelled() {
      super.onCancelled();
      mTask.cancel(true);
 }

我也试过了
asyncTaskObject.cancel(true);

这在与事件关联时特别有效。
但假设场景是这样的——有4个异步任务。第一个叫第二个,第二个叫第三个,第三个叫第四个。当用户进入活动时,没有对话框。
否则我们可以用oncancel方法。
当用户单击页面上的任何位置时,将显示对话框如果用户不单击任何位置,则不会显示对话框,但异步任务仍在后台运行。假设用户单击上的“上一步”按钮或主页用户的导航图标从当前活动中取出。但异步任务一直在后台运行,最终应用程序崩溃。我已经习惯了onbackpressed中的cancel方法。但问题是你不能确定哪个任务正在运行,而应用程序会再次启动。
怎么办?

最佳答案

将对asynctask对象的引用保留为实例变量,然后在ondestroy()中执行此操作

@Override
protected void onDestroy() {
    if (mTask != null) {
        mTask.cancel(true);
    }

    super.onDestroy();
}

10-07 19:46
查看更多