2012-02-22 19 views
15

Im sử dụng một vài cảm biến - MediaRecorder và MediaPlayer, NotificationManager, một WakeLock, và LocationListener ...android.app.SuperNotCalledException: Hoạt động không gọi qua để super.onStop()

Đây là onResume của tôi() và onPause() chức năng:

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; 

} 

và đây là kết quả 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} 

Làm cách nào để khắc phục lỗi này? Tôi đã cố gắng thêm super.onStop() vào số onPause() của mình.

+0

Kiểm tra điều này có thể giúp bạn http://stackoverflow.com/questions/3124965/android-unable-to-stop-activity – kosa

+0

Vâng, đó là một trong những thứ tôi đã tìm thấy trước khi đăng ... Tôi đoán b/c Tôi không có một onStop() chức năng, tôi đã không chắc chắn rằng tôi cần nó ... cũng đã cố gắng để thêm super.onStop() để onPause() của tôi chức năng, nhưng cùng một lỗi ... –

+0

Không, bạn cần phải có chức năng onStop. Bạn không thể gọi super.onStop() từ tạm dừng. Tạm dừng/Dừng là các hoạt động khác nhau. – kosa

Trả lời

39

Bạn cần đảm bảo rằng bạn có super.onStopsuper.onDestroy trong các phương pháp được ghi đè của mình. Đây có thể là một ứng cử viên tốt cho các vấn đề bạn có:

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

    super.onStop(); 
} 

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

    super.onDestroy(); 
} 
+0

Xin lỗi vì đã mất quá nhiều thời gian để chấp nhận câu trả lời ... cách xử lý được sử dụng, nó thực sự không hỗ trợ các phương thức này ra khỏi hộp (thư viện cấp cao vui nhộn dành cho Android), vì vậy tôi đã nhầm lẫn về thực hiện ... tất cả được sắp xếp ngay bây giờ. –

0

Ngưng ném exeptions sau khi thêm trống onPause và onResume sự kiện (Tôi đã thêm phương pháp của bạn dù sao, chỉ để được an toàn).

Rõ ràng, hoạt động thứ hai vẫn dừng lại vì dường như không có lý do gì. Nhưng tôi sẽ đưa ra một câu hỏi khác về điều đó.

Các vấn đề liên quan