Проблемы с остановкой службы LocationListener

У меня есть IntentService, который реализует LocationListener. Он запускается, пока работает мое приложение, и уничтожается, когда мое приложение закрывается. В своем методе onHandleIntent я получаю LocationManager и регистрирую обновления местоположения формы службы. В методе onDestroy я вызываю:

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 uk.ac.ic.doc.vmw10.wherewolf.helpers.Locater@44f53fa8: 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 не остановится, когда я закрою приложение. Любые идеи, как я могу это исправить?


person Pikaling    schedule 23.08.2011    source источник
comment
Это ваш код: uk.ac.ic.doc.vmw10.wherewolf.helpers.Locater? Или у вас есть доступ к исходному коду? Вы можете проверить эту строку или поставить ее здесь. Это может дать нам ключ к тому, как помочь вам   -  person momo    schedule 24.08.2011


Ответы (1)


Как насчет того, чтобы обернуть его нулевой проверкой?

if (locationManager != null)
    locationManager.removeUpdates(this);
person hooked82    schedule 23.08.2011