Когда мое приложение закрывается, мой датчик GPS продолжает работать или когда я меняю действия, мое приложение вылетает в зависимости от моей конфигурации (в приведенном ниже коде оно вылетает, когда я меняю действия или покидаю приложение).Как изменить свое действие ниже, чтобы при выходе из приложения датчик GPS прекращал работать, а когда я перехожу к другому действию, он продолжает работать?
Вот ключевые части моей деятельности:
public class InitialChoice extends Activity {
LocationManager mlocManager;
LocationListener mlocListener;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.initial_screen);
mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
@Override
protected void onStop(){
//mlocManager.removeUpdates(mlocListener);
mlocManager.removeGpsStatusListener((Listener) mlocListener);
mlocManager = null;
}
}
Если я использую следующий код вместо onStop (), gps не остановится:
@Override
public void finish(){
//mlocManager.removeUpdates(mlocListener);
mlocListener = null;
mlocManager = null;
}
LogCat:
12-16 21:54: 58.120: D / LocationManager (909): requestLocationUpdates: provider = gps, listener = com.dummies.android.taskreminder.MyLocationListener@46284458 12-16 21: 55: 04.740: D / AndroidRuntime (909): завершение работы VM 12-16 21: 55: 04.740: W / dalvikvm (909): threadid = 1: поток выходит с необработанным исключением (группа = 0x400259f8) 12-16 21: 55: 04.750: E / AndroidRuntime (909): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 12-16 21: 55: 04.750: E / AndroidRuntime (909): java.lang.RuntimeException: невозможно остановить деятельность {com.dummies.android.taskreminder / com.dummies.android.taskreminder.activity.InitialChoice}: java.lang.ClassCastException: com.dummies.android.taskreminder.MyLocationListener 12-16 21: 55: 04.750: E / AndroidRuntime (909): на android.app.ActivityThread.performStopActivityInner (ActivityThread.java:3632) 12-16 21: 55: 04.750: E / AndroidRuntime (909): на android.app.ActivityThread.handleStopActivity (ActivityThread.java:3677) 12-16 21: 55: 04.750: E / AndroidRuntime (909): на android.app.ActivityThread.access $ 2600 (ActivityThread.java:135) 12-16 21:55: 04.750: E / AndroidRuntime (909): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2153) 12-16 21: 55: 04.750: E / AndroidRuntime (909): на android.os.Handler.dispatchMessage (Handler.java:99) 12-16 21: 55: 04.750: E / AndroidRuntime (909): на android.os.Looper.loop (Looper.java:144) 12-16 21: 55: 04.750: E/ AndroidRuntime (909): в android.app.ActivityThread.main (ActivityThread.java:4937) 12-16 21: 55: 04.750: E / AndroidRuntime (909): в java.lang.reflect.Method.invokeNative (собственный метод)
Новые ошибки для меня с методом здесь: Остановить прослушиватель местоположения в Android
12-16 23: 10: 50.295: W / dalvikvm (1272): threadid = 1: поток выходит с неперехваченным исключением (группа = 0x400259f8) 12-16 23: 10: 50.305: E / AndroidRuntime (1272): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 12-16 23: 10: 50.305: E /AndroidRuntime (1272): java.lang.RuntimeException: Невозможно остановить активность.taskreminder / com.dummies.android.taskreminder.activity.InitialChoice} не обращался к super.onStop () 12-16 23: 10: 50.305: E / AndroidRuntime (1272): в android.app.ActivityThread.performStopActivityInner (ActivityThread.java:3632) 12-16 23: 10: 50.305: E / AndroidRuntime (1272): на android.app.ActivityThread.handleStopActivity (ActivityThread.java:3677)