MediaPlayer.start() 也应该是一个新线程吗?

2023-12-29

这里的教程解释了服务实际上使用主线程。所以它使用prepareAsync为避免阻塞UIS:http://developer.android.com/guide/topics/media/mediaplayer.html#asyncprepare http://developer.android.com/guide/topics/media/mediaplayer.html#asyncprepare

我想知道异步回调在哪里onPrepared运行。在示例中onPrepared调用开始于MediaPlayer。 start也是一种CPU密集型方法吗?如果它在同一个线程中运行,它也会阻塞。


MediaPlayer.start()根本不是一个密集的操作。这MediaPlayer使用自己的本机线程来执行任务,但是调用同步prepare对于 UI 线程来说,方法可能会花费太长的时间,特别是当您尝试播放远程媒体时。在这种情况下,它必须等待一个或多个网络请求、缓冲数据等。onPrepared如果主线程是您调用的地方,回调将在主线程上发生prepareAsync(或者更准确地说,您从任何线程中调用它)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MediaPlayer.start() 也应该是一个新线程吗? 的相关文章

随机推荐