Android.app.SuperNotCalledException: Activity did not call through to super.onStop()

android

Im using a few sensors – MediaRecorder and MediaPlayer, NotificationManager, a WakeLock, and LocationListener…

Here is my onResume() and onPause() functions:

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;

}

And here's the Logcat output…

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:
com.android.internal.view.IInputMethodClient$Stub$Proxy@40713650
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}

How do I fix this error? I've tried to add super.onStop() to my onPause().

Best Solution

You need to make sure that you have super.onStop and super.onDestroy in your overridden methods. This could be a good candidate for the problem you have:

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

    super.onStop();
}

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

    super.onDestroy();
}