Android.app.SuperNotCalledException: активность не вызывала super.onStop()

Im использует несколько датчиков - MediaRecorder и MediaPlayer, NotificationManager, WakeLock и LocationListener...

Вот мои функции onResume() и onPause():

void onResume() {
  super.onResume();

  //GPS Sensor
  locationListener = new MyLocationListener();
  locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  locationManager.requestLocationUpdates(
      LocationManager.GPS_PROVIDER, 0, 0, locationListener);

  // Notification Manager
  gNotificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  gNotification = new Notification();
  gNotification.vibrate = gVibrate;

}

...

void onPause() {
  super.onPause();

  // Release the Recorder
  if (mRecorder != null) {
    mRecorder.release();
    mRecorder = null;
  }

  // Release the Media Player
  if(mPlayer != null) {
    mPlayer.release();
    mPlayer = null; 
  }

  // Release Power Manager
  wake.Stop();
  wake = null;

  // Release Location Listener
  locationManager.removeUpdates(locationListener); 
  locationManager = null;

}

И вот вывод Logcat...

threadid=1: thread exiting with uncaught exception
(group=0x40015560) 
FATAL EXCEPTION: main
android.app.SuperNotCalledException: Activity
{changethispackage.beforesubmitting.tothemarket.sonicdrift/
changethispackage.beforesubmitting.tothemarket.sonicdrift.SonicDrift}
did not call through to super.onStop()

at android.app.Activity.performStop(Activity.java:3875)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:2690)
at android.app.ActivityThread.access$2100(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:964)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native
Method) W/InputManagerService(   96): Window already focused, ignoring
focus gain of:
[email protected]
I/Process (17118): Sending signal. PID: 17118 SIG: 9
I/ActivityManager(   96): Process
changethispackage.beforesubmitting.tothemarket.sonicdrift (pid 17118)
has died. I/WindowManager(   96): WIN DEATH: Window{40958d98
changethispackage.beforesubmitting.tothemarket.sonicdrift/changethispackage.
beforesubmitting.tothemarket.sonicdrift.SonicDrift
paused=false} I/WindowManager(   96): WIN DEATH: Window{40991f90
SurfaceView paused=false}

Как исправить эту ошибку? Я попытался добавить super.onStop() в мой onPause().

Ответы

Ответ 1

Вам нужно убедиться, что у вас есть super.onStop и super.onDestroy в ваших переопределенных методах. Это может быть хорошим кандидатом для вашей проблемы:

@Override
protected void onStop() {
    Log.w(TAG, "App stopped");

    super.onStop();
}

@Override
protected void onDestroy() {
    Log.w(TAG, "App destroyed");

    super.onDestroy();
}

Ответ 2

Остановить исключения при добавлении пустых событий onPause и onResume (я все равно добавил ваши методы, чтобы быть в безопасности).

Напротив, вторая активность по-прежнему остается без видимых причин. Но я задам еще один вопрос.