0

同様の質問を見かけますが、回答はさまざまで、統一されていません。

MediaPlayer と登録済みのリスナーを検討してください (たとえば、再生の完了、または onPrepared など)。テストしたところ、再生を開始したスレッドと同じスレッドでコールバックが実行されました。私のアプリはゲームなので、このスレッドはUI スレッドではなく、ゲームのスレッドです (ちなみにハンドラーはありません)。

いつ呼び出されるかについての保証はありますか?私のゲーム スレッドは常に実行されているため、コールバックがシステムによってどのように、どのような制限 (存在する場合) で呼び出されるの、実際には想像できません。私のゲーム スレッドは常に動作しているため、操作の途中でコールバックを呼び出す必要があります (?)。しかし、取得できません。

4

1 に答える 1

0

さらにテストを行い、スレッド名のログを正しい場所に配置した後、答えが得られました。

(MediaPlayer を作成した) スレッドが Looper でない場合、Android は明らかにメッセージを送信できません。そのため、UI スレッドからこれらのコールバックが呼び出されます (Martin James も言ったように、メッセージ キュー メカニズムを介して)。これは私のテストで確認されており、概念的にも正しいです (Android アーキテクチャの Looper の概念に適合するため)。

于 2012-06-16T19:24:05.077 に答える