我看到类似的问题,但答案各不相同,并且不统一。
考虑一个MediaPlayer和一个注册的监听器(例如,已完成 播放,或onPrepared等)。我测试了它,回调是 在与开始播放的线程相同的线程上执行。 由于我的应用程序是一个游戏,这个线程不 UI线程,它是 游戏的主题(顺便说一下,没有任何处理程序)。
是否有任何关于何时被召唤的保证?我的游戏线程 一直在运行,所以我无法想象如何和什么 限制(如果有的话)我的回调被系统调用。我的游戏 线程一直在工作,所以必须在中调用回调 操作的中间(?) - 但是我没有得到它。
答案 0 :(得分:0)
我在经过多次测试后得到了答案,并将线程名称记录到正确的位置后。
如果您的线程(创建MediaPlayer)不是Looper,那么Android显然无法向其发送消息。因此,它将从您的UI线程调用这些回调(通过消息队列机制,正如Martin James所说的那样)。我的测试证实了这一点,它在概念上也是正确的(因为它适合Android架构的Looper概念)。