1

異なるサウンドに2つのメディアプレーヤーを使用しているアクティビティでは、両方のサウンドが再生され、戻るボタンが押されても問題はありません。問題なく動作します。メディアプレーヤーが停止して解放します(mpはループに設定され、mpは短い音を再生するだけです)

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    mp.stop();
    super.onPause();
}
@Override
protected void onStop() {
    // TODO Auto-generated method stub
    mp.release();
    mps.release();
    super.onStop();
}

ただし、一方または両方のサウンドが再生されない場合、戻るボタンが押されたときに強制的に閉じられ、nullポインタ例外が発生します。メディアプレーヤーが使用されたことがあり、したがってそれらを停止して解放する必要があるかどうかを確認するためのコードをどのように記述しますか?

4

2 に答える 2

0

カウントを使用して、プレイがあった場合はそれに1を追加し、それが0に等しいかどうかを確認できますか。

于 2012-03-08T17:04:20.253 に答える
0

onPauseとonStopでnullポインターを取得している場合は、mpがnullかどうかを確認する必要があります。

@Override
protected void onPause() {
    if (mp != null)
      mp.stop();
    super.onPause();
}
@Override
protected void onStop() {
   if (mp != null)
    mp.release();
   if (mps != null)
    mps.release();

    super.onStop();
}

必要に応じてカウントを維持できますが、必要な変数にすでにアクセスできる場合は、別の変数を追跡することを意味します

于 2012-03-08T17:07:56.180 に答える