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/Process(295): 发送信号。PID:295 SIG:9 06-25 14:38:57.507:D/dalvikvm(311):GC_FOR_MALLOC 在 145 毫秒内释放了 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: 线程退出未捕获异常 (group=0x4001d800) 06-25 14:38:59.576: E/AndroidRuntime(311): FATAL例外:主要 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: 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

4

2 回答 2

0

你需要不断mp.pasue()地_onPausemp.stop()mp.release()onDestroy

于 2013-06-25T11:49:17.283 回答
0

最好的解决方案是在服务中播放音乐,它不会依赖于 UI,你也应该在 onDestroy 方法中释放媒体播放器,它可能是空的,你也可以检查它

public void pause( ) {

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

if(mp!=null)
  mp.release();
}
于 2013-06-25T11:49:19.450 回答