我正在尝试在应用退出时停止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)'
答案 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
是否为空。
您可能还想通过调用来检查mTask
在Activity
被销毁时是否仍在运行
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...);
实际上不会取消你的任务,除非你检查任务中的取消标志并优雅退出,但这是你必须编程的东西。请参阅"取消任务"是上面引用的文档。