Android Async任务取消/停止

D-D*_*D-D 12 events android android-asynctask

我想知道停止异步任务运行的最佳方法是什么.

我试过了

@Override protected void onCancelled() { 
      super.onCancelled(); 
      mTask.cancel(true);       
 }
Run Code Online (Sandbox Code Playgroud)

我也试过了

asyncTaskObject.cancel(true);
Run Code Online (Sandbox Code Playgroud)

这在与事件相关联时特别有用.

但假设场景是---有4个AsyncTask.首先调用第二个,第二个调用第三个和第三个调用第四个.当用户输入活动时,没有对话框.否则我们可以在那里使用onCancel方法.当用户点击页面上的任何位置时,如果用户没有单击任何地方,则会出现对话框,但没有显示对话框,但异步任务在后台继续运行.假设用户单击"返回"按钮或导航图标到主页页面user.is取出当前活动.但异步任务继续在后台运行,最终应用程序崩溃.我已经习惯了onBackPressed中的cancel方法.但问题是你不能确定哪个任务正在运行,应用程序再次运行.

这是怎么回事?

Abh*_*han 17

继续引用AsyncTask对象作为实例变量,然后在onDestroy()中执行此操作

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

    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)