停止LocationListener服务的问题
问题描述:
我有一个实现LocationListener的IntentService。它在我的应用程序运行时运行,并在应用程序关闭时被销毁。在onHandleIntent方法中,我得到一个LocationManager并注册服务表单位置更新。在它的onDestroy方法,我称之为:停止LocationListener服务的问题
locationManager.removeUpdates(this);
然而,这有时会导致一个NullPointerException:
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): FATAL EXCEPTION: main
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): java.lang.RuntimeException: Unable to stop service [email protected]: java.lang.NullPointerException
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.app.ActivityThread.handleStopService(ActivityThread.java:3090)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.app.ActivityThread.access$3700(ActivityThread.java:125)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2099)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.os.Looper.loop(Looper.java:123)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at java.lang.reflect.Method.invoke(Method.java:521)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at dalvik.system.NativeStart.main(Native Method)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): Caused by: java.lang.NullPointerException
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at uk.ac.ic.doc.vmw10.wherewolf.helpers.Locater.onDestroy(Locater.java:137)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): at android.app.ActivityThread.handleStopService(ActivityThread.java:3076)
08-23 20:45:09.826: ERROR/AndroidRuntime(6541): ... 10 more
如果我删除该行,该NullPointerException异常消失,但LocationListener的不停止的时候我关闭我的应用。任何想法如何解决这个问题?
答
如何将它包装在空检查中?
if (locationManager != null)
locationManager.removeUpdates(this);
+0
啊谢谢 - 我不太清楚什么是空的。现在全部修好了 – Pikaling
显示一些代码? – darma
这是你的代码吗?uk.ac.ic.doc.vmw10.wherewolf.helpers.Locater?或者你有权访问源代码?你可以检查那条线或把它放在这里。它可能为我们提供了一个线索,帮助你如何帮助你 – momo