我使用了一些传感器 - 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:
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}
如何修复此错误?我已尝试将super.onStop()
添加到onPause()
。
答案 0 :(得分:42)
您需要确保在覆盖的方法中有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();
}
答案 1 :(得分:0)
在添加空的onPause和onResume事件后停止投掷exeptions(我已经添加了你的方法,只是为了安全)。
尽管如此,第二项活动仍然因为看似没有理由而停止。但我会就此提出另一个问题。