0

私のアプリには、オーディオを再生するサービスがあり、そのサービスには単一の静的MediaPlayerオブジェクトしかありません。表示する UI 要素を決定するためonStart()に呼び出すメイン アクティビティから、呼び出した行でANR メッセージとMediaPlayer.isPlaying();NullPointerExceptionMediaPlayer.isPlaying();

また、特定のボタンが押されたときに電話をかけますが、これも ANR の原因です。ANRなしではそれを乗り越えることができなかったので、電話MediaPLayer.isPlaying();を取り去った後にそれを発見しました...MediaPlayer.isPlaying();onStart();

この同様の質問を見つけました: MediaPlayer isPlaying() は常に false を返します

誰かが言っているところ: 「また、MediaPlayer の一般的な話題について説明していますが、isPlaying() が UI スレッドで呼び出されると ANR が発生する可能性があることに注意してください。実際、Google はすべての MediaPlayer 呼び出しをバックグラウンド ハンドラー スレッドから実行することを推奨しています。これは、また、MediaPlayer 呼び出しの実行をシリアル化します。」

これに関するドキュメントには何も見つかりませんでした。では、これらのシナリオで短命のスレッドを作成して、自分の のステータスを確認できるようにするにはどうすればよいMediaPlayerですか? それとも別の方法がありますか?

4

0 に答える 0