我建立来自Web服务器的流音乐的应用程序。 该应用程序有一个使用的MediaPlayer播放前景的服务。
我的代码是基于这个例子: http://developer.android.com/guide/topics/media/mediaplayer.html
在该示例中,没有螺纹除了prepareAsync()调用。 是什么让我困惑的是,当我读到的服务类,我觉得这样的信息:
“注意:一种服务,它的宿主进程,服务的主线程中运行不创建自己的线程,并在一个单独的进程不运行(除非另行指定)。这意味着,如果你的服务是打算做任何CPU密集型工作或阻塞操作(如MP3播放或网络),你应该在服务中创建一个新的线程来完成这项工作,通过使用一个单独的线程,否则会降低应用风险无响应(ANR)错误和应用程序的主线程可以继续致力于用户交互与你的活动“。
我问的原因是应用一些时间(通常失去连接时)的音频流时冻结UI。 我完全理解的是,UI冻结该服务是否让CPU紧张的工作,因为活动和服务的同一线程上运行。 但是,我应该期望MediaPlayer的是这种激烈? 也就是说,它应该在一个单独的线程上运行?