特定のアクティビティ内からmp3ファイルを自動的に連続して再生するアプリに取り組んでいます。 MediaPlayerから「onCompletion」イベントをリッスンすることで、現在のmp3再生がいつ完了するかを認識します。
ただし、メディアの再生中に戻るボタンを押して開始表示に戻ると、アクティビティはまだ実行されているようです。 「onCompletion」イベントがトリガーされると、リストアクティビティ内のビューにアクセスしようとし、nullポインタ例外でクラッシュします。
アクティビティが「アクティブ」ではなくなったため、次のオーディオを再生するための呼び出しを防ぐことができると判断するための最良の方法は何ですか?
アクティビティライフサイクルメソッドonStopまたはonDestroyでそれらをトリガーしてみてください。詳細については、 このドキュメント を確認してください。
onStopは、ユーザーが戻るボタンをクリックするとトリガーされます。したがって、onStopでイベントを処理します。
public void onStop () {
//do your stuff here
super.onStop()
}
最終的にはonDestroyも呼び出されますが、必ずしも[戻る]ボタンがクリックされるとすぐに呼び出されるとは限りません。