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 が 2068 オブジェクトを解放 / 194376 バイトを 145 ミリ秒で 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 more 06-25 14:39:20.727: I/Process(311): シグナルを送信しています。PID: 311 SIG: 9

4

2 に答える 2

0

あなたは何度も何度も持つ必要mp.pasue()onPauseありますmp.stop()mp.release()onDestroy

于 2013-06-25T11:49:17.283 に答える
0

最善の解決策は、UIに依存しないようにサービスで音楽を再生することです。また、onDestroyメソッドでメディアプレーヤーを解放する必要があります。おそらくnullでも確認できます

public void pause( ) {

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

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