0

我看到类似的问题,但答案各不相同,并不统一。

考虑一个 MediaPlayer 和一个注册的侦听器(例如,用于完成播放,或 onPrepared 等)。我对其进行了测试,并且回调在与开始播放的线程相同的线程上执行。由于我的应用程序是一个游戏,这个线程不是UI 线程,它是游戏的线程(顺便说一下,没有任何处理程序)。

是否有关于何时调用它的保证?我的游戏线程一直在运行,所以我无法想象系统调用回调的方式和限制(如果有的话)。我的游戏线程一直在工作,因此必须在操作中间调用回调(?)——但我不明白。

4

1 回答 1

0

经过更多测试,并将线程名称记录到正确的位置后,我得到了答案。

如果您的线程(创建 MediaPlayer)不是 Looper,那么 Android 显然无法向其发送消息。所以它会从你的 UI 线程调用这些回调(通过消息队列机制,正如 Martin James 所说的那样)。我的测试证实了这一点,它在概念上也是正确的(因为它符合 Android 架构的 Looper 概念)。

于 2012-06-16T19:24:05.077 回答