停止AsyncTask的例外情况

时间:2017-03-03 14:01:54

标签: android android-asynctask

我正在尝试在应用退出时停止AsyncTask,但我收到以下异常。我哪里错了?这是我的代码 -

我宣布变量 -

private DownloadFileAsync mTask;

然后在onDestroy -

@Override
public void onDestroy() {
    Log.v("SERVICE", "Service killed");
    mTask.cancel(true);
    super.onDestroy();
}
  

03-03 08:57:41.200:E / AndroidRuntime(22678):java.lang.RuntimeException:无法停止服务com.exe.shark.NSOMUHBroadcastService@d58223c:java.lang.NullPointerException:尝试调用虚方法空对象引用上的'boolean com.exe.shark.NSOMUHBroadcastService $ DownloadFileAsync.cancel(boolean)'

3 个答案:

答案 0 :(得分:0)

尝试检查mTask是否为空

@Override
public void onDestroy() {
    Log.v("SERVICE", "Service killed");
    if(mTask != null) {
        mTask.cancel(true);
    }
    super.onDestroy();
}

答案 1 :(得分:0)

AsyncTask被销毁之前,您的Activity可能尚未实例化或运行。 因此,您可能必须检查mTask是否为空。

您可能还想通过调用来检查mTaskActivity被销毁时是否仍在运行 mTask.getStatus() == AsyncTask.Status.RUNNING

答案 2 :(得分:0)

看起来df = df[df.duplicated(subset=['Date','name'], keep=False)] print (df) Date name objects 4 2012-02-13 Mike 9 5 2012-02-13 Mike 18 未设置且为空。要开始mTask,请执行以下操作:

AsyncTask

仅仅声明任务变量是不够的 - 您必须如上所示显式启动它。有关详细信息,请参阅documentation

我还要提到DownloadFileAsync mTask = new DownloadFileAsync (...parameters vary...); mTask.execute(...parameters vary...); 实际上不会取消你的任务,除非你检查任务中的取消标志并优雅退出,但这是你必须编程的东西。请参阅"取消任务"是上面引用的文档。