android – MediaPlayer应该在单独的线程中运行吗?

android – MediaPlayer应该在单独的线程中运行吗?,第1张

概述我正在构建一个从Web服务器流式传输音乐的应用程序.该应用程序具有使用MediaPlayer播放的前台服务. 我的代码是基于这个例子:http://developer.android.com/guide/topics/media/mediaplayer.html 在该示例中,除了prepareAsync()调用之外,没有任何内容是线程.令我困惑的是,当我阅读关于Service类的时候,我发现这个信 我正在构建一个从Web服务器流式传输音乐的应用程序.该应用程序具有使用MediaPlayer播放的前台服务.

我的代码是基于这个例子:http://developer.android.com/guide/topics/media/mediaplayer.html

在该示例中,除了prepareAsync()调用之外,没有任何内容是线程.令我困惑的是,当我阅读关于Service类的时候,我发现这个信息:

“注意:一个服务在其主机进程的主线程中运行 – 该服务不会创建自己的线程,并且不会在单独的进程中运行(除非另有指定),这意味着如果您的服务将执行任何cpu密集型工作或阻塞 *** 作(如MP3播放或网络连接)时,您应该在服务中创建一个新的线程来完成此工作,通过使用单独的线程可以降低应用程序无响应(ANR)错误的风险,应用程序的主线程可以保持专用于与您的活动的用户交互.

我问的原因是应用程序有时候(通常当断开连接时)在流式传输音频时冻结UI.我完全明白,由于活动和服务运行在同一个线程上,因此服务使cpu变得更加强大,UI会冻结.但是,我应该期望MediaPlayer是如此激烈?那就是应该在单独的线程上运行吗?

解决方法 不幸的是,调用prepareAsync()并不足以避免ANR提示和您的应用程序挂起几秒钟,尤其是从网络播放文件时.最好的办法是将MediaPlayer的实例放在自己的线程中,或者至少在Handler中执行密集的调用(如mediaplayer.start()).我一直在使用MediaPlayer一年多,根据具体情况,我可以告诉你,在各种电话之后,它肯定会挂起来. 总结

以上是内存溢出为你收集整理的android – MediaPlayer应该在单独的线程中运行吗?全部内容,希望文章能够帮你解决android – MediaPlayer应该在单独的线程中运行吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存