我可以在锁定手机但旋转时停止播放声音 错误应用程序意外停止我使用
<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 / Process(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):没有用于id 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):致命异常:主要 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):在android.app.ActivityThread.performPauseActivity(ActivityThread.java:3348) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.performPauseActivity(ActivityThread.java:3305) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3288) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.access $ 2500(ActivityThread.java:125) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2044) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.os.Handler.dispatchMessage(Handler.java:99) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.os.Looper.loop(Looper.java:123) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.main(ActivityThread.java:4627) 06-25 14:38:59.576:E / AndroidRuntime(311):at java.lang.reflect.Method.invokeNative(Native Method) 06-25 14:38:59.576:E / AndroidRuntime(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):在android.app.Activity.performPause(Activity.java:3842) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190) 06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.performPauseActivity(ActivityThread.java:3335) 06-25 14:38:59.576:E / AndroidRuntime(311):... 12更多 06-25 14:39:20.727:I / Process(311):发送信号。 PID:311 SIG:9
答案 0 :(得分:0)
您需要mp.pasue()
中的onPause
以及mp.stop()
上的mp.release()
和onDestroy
答案 1 :(得分:0)
最好的解决方案是在服务中播放音乐,它不会依赖于UI,你也应该在onDestroy方法中发布媒体播放器,它可能是null,你也可以检查它
public void pause( ) {
if(mp!=null)
mp.pause();
}
public void release( ) {
if(mp!=null)
mp.release();
}