私のアプリには、オーディオを再生するサービスがあり、そのサービスには単一の静的MediaPlayer
オブジェクトしかありません。表示する UI 要素を決定するためonStart()
に呼び出すメイン アクティビティから、呼び出した行でANR メッセージとMediaPlayer.isPlaying();
NullPointerException
MediaPlayer.isPlaying();
また、特定のボタンが押されたときに電話をかけますが、これも ANR の原因です。ANRなしではそれを乗り越えることができなかったので、電話MediaPLayer.isPlaying();
を取り去った後にそれを発見しました...MediaPlayer.isPlaying();
onStart();
この同様の質問を見つけました: MediaPlayer isPlaying() は常に false を返します
誰かが言っているところ: 「また、MediaPlayer の一般的な話題について説明していますが、isPlaying() が UI スレッドで呼び出されると ANR が発生する可能性があることに注意してください。実際、Google はすべての MediaPlayer 呼び出しをバックグラウンド ハンドラー スレッドから実行することを推奨しています。これは、また、MediaPlayer 呼び出しの実行をシリアル化します。」
これに関するドキュメントには何も見つかりませんでした。では、これらのシナリオで短命のスレッドを作成して、自分の のステータスを確認できるようにするにはどうすればよいMediaPlayer
ですか? それとも別の方法がありますか?