Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在UI线程上实现android mediaPlayer回调?_Android_Multithreading_Event Handling_Android Mediaplayer - Fatal编程技术网

为什么在UI线程上实现android mediaPlayer回调?

为什么在UI线程上实现android mediaPlayer回调?,android,multithreading,event-handling,android-mediaplayer,Android,Multithreading,Event Handling,Android Mediaplayer,我有自定义的jni本地播放器实现。事实上,android应用程序同时使用2名玩家来加速下一曲目的准备 我注意到android的android.media.MediaPlayer实现将所有内容都放回UI线程,现在我正试图了解原因、可能的好处以及以同样的方式执行是否有意义。当前,来自每个jni播放器的所有播放器事件/回调都返回到运行该本地播放器的java线程 请分享你的想法。谢谢。通过使用UI线程,可以完全定义在哪个线程中调用回调。它简化了使用UI线程的其他任务的排序。正如在评论中提到的,如果它不在

我有自定义的jni本地播放器实现。事实上,android应用程序同时使用2名玩家来加速下一曲目的准备

我注意到android的android.media.MediaPlayer实现将所有内容都放回UI线程,现在我正试图了解原因、可能的好处以及以同样的方式执行是否有意义。当前,来自每个jni播放器的所有播放器事件/回调都返回到运行该本地播放器的java线程


请分享你的想法。谢谢。

通过使用UI线程,可以完全定义在哪个线程中调用回调。它简化了使用UI线程的其他任务的排序。正如在评论中提到的,如果它不在UI线程中,它将是一个随机线程,或者它将需要一个执行器,这使得它更加复杂


如果您使用自己的线程而不是UI线程,那么用户必须进行大量同步,并向UI线程发布需要UI线程的方法的消息;在最坏的情况下,由于已经在UI线程上,如果回调太长,您将看到性能下降

反向问题:UI线程有什么问题?谢谢你的回答。我会接受的,因为可能没有更好的解释了。