2013-06-25 83 views
0

我可以從何時鎖定移動停止播放聲音,但是當它旋轉 錯誤應用程序意外停止發生,我用停止播放聲音時如何解決停止應用程序?

<activity 
     android:name="x" 
     android:label="@string/app_name" 
     android:configChanges="orientation|keyboardHidden|screenSize"> 

但旋轉,當屏幕是沒有任何數據白色。當我加入這行代碼

android:screenOrientation="portrait" 

,效果不錯,但沒有旋轉 也時有發生,我從移動相同的錯誤點擊返回另一個問題又

@Override 
protected void onResume() { 

    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 

    registerReceiver(listener, intentFilter); 

    super.onResume(); 
} 
@Override 
protected void onPause() { 
    IntentFilter intentFilter = new IntentFilter(); 
    super.onPause(); 
    wb.pause(); 
    unregisterReceiver(listener); 
} 
@Override 
protected void onDestroy() { 
    IntentFilter intentFilter = new IntentFilter(); 

    wb.release(); 
    unregisterReceiver(listener); 
} 

注意: wb是接口類的實例WebAppInterface

public void pause() { 

     mp.pause(); 
} 
public void release() { 
     mp.stop(); 
    mp.release(); 

}

06-25 14:38:51.507:I /方法(295):發送信號。 PID:295 SIG:9 06-25 14:38:57.507:D/dalvikvm(311):GC_FOR_MALLOC在145ms中釋放2068個對象/ 194376個字節 06-25 14:38:59.376:W/KeyCharacterMap(311):No鍵盤爲0 0 06-25 14:38:59.376:W/KeyCharacterMap(311):使用默認鍵盤映射:/system/usr/keychars/qwerty.kcm.bin 06-25 14:38:59.546:D/AndroidRuntime (311):關閉VM 06-25 14:38:59.546:W/dalvikvm(311):threadid = 1:以未捕獲的異常退出的線程(組= 0x4001d800) 06-25 14:38:59.576:E/AndroidRuntime(311):致命例外:main 06-25 14:38:59.576:E/AndroidRuntime(311):java.lang.RuntimeException:無法暫停活動{com.ramadan/com.ramadan.Ramadan}:java。 lang.NullPointerException 06-25 14:38:59.576:E/AndroidRuntime(311):at android.app.ActivityThread。 E/AndroidRuntime(311):at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3305) 06-25 14:38:59.576: E/AndroidRuntime(311):at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3288) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.app.ActivityThread.access $ 2500(ActivityThread .java:125) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2044) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.os.Handler.dispatchMessage(Handler.java:99) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.os.Looper.loop(Looper.java :123) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.app.ActivityThread.main(Act E/AndroidRuntime(311):at java.lang.reflect.Method.invokeNative(Native Method) 06-25 14:38:59.576:E/AndroidRuntime(本地方法) 06-25 14:38:59.576: (311):at java.lang.reflect.Method.invoke(Method.java:521) 06-25 14:38:59.576:E/AndroidRuntime(311):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .run(ZygoteInit.java:868) 06-25 14:38:59.576:E/AndroidRuntime(311):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 06-25 14 :38:59.576:E/AndroidRuntime(311):at dalvik.system.NativeStart。main(Native Method) 06-25 14:38:59.576:E/AndroidRuntime(311):引起於:java.lang.NullPointerException 06-25 14:38:59.576:E/AndroidRuntime(311):at com。 ramadan.Ramadan.onPause(Ramadan.java:125) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.app.Activity.performPause(Activity.java:3842) 06-25 14: 38:59.576:E/AndroidRuntime(311):at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190) 06-25 14:38:59.576:E/AndroidRuntime(311):at android.app.ActivityThread。 (311):... 12更多 06-25 14:39:20.727:I /進程(311):發送信號。 PID:311 SIG:9

回答

0

你需要有mp.pasue()在和mp.stop()mp.release()onDestroy

+0

我修改了代碼,但錯誤「應用程序停止了......」再次發生時,旋轉和點擊返回 – egydeveloper

+0

'wb.release () ;'應該在'wb.stop()之後調用'這是因爲當文件正在播放時你不能釋放 – blganesh101

0

最好的解決辦法是在服務這種方式播放的音樂也不會依賴於UI你也應該釋放的onDestroy方法的媒體播放器它可能爲空,你可以檢查它太

public void pause() { 

if(mp!=null) 
     mp.pause(); 
} 
public void release() { 

if(mp!=null) 
    mp.release(); 
} 
+0

我編輯了我的代碼,但是旋轉後再次發生錯誤「應用程序已停止...」,並且點擊返回 – egydeveloper

+0

仍然發生錯誤 – egydeveloper

+0

嘗試評論您的onConfigurationChanged方法,然後對其進行測試,可能是因爲您正在加載的新佈局不包含您在活動中使用的UI組件 –