2011-08-23 125 views
1

我有一个实现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的不停止的时候我关闭我的应用。任何想法如何解决这个问题?

+0

显示一些代码? – darma

+0

这是你的代码吗?uk.ac.ic.doc.vmw10.wherewolf.helpers.Locater?或者你有权访问源代码?你可以检查那条线或把它放在这里。它可能为我们提供了一个线索,帮助你如何帮助你 – momo

回答

2

如何将它包装在空检查中?

if (locationManager != null) 
    locationManager.removeUpdates(this); 
+0

啊谢谢 - 我不太清楚什么是空的。现在全部修好了 – Pikaling