使用Service或IntentService在单独的线程中运行MediaPlayer

8

你好,我需要一个MediaPlayer实例在后台运行,所以我开始使用Service。

一切都很顺利,但是过了一段时间后,我收到了ANR(应用程序未响应)的提示,即使UI完美地工作。很清楚,我知道Service仍在主线程上运行,因此ANR是有道理的。

因此,我尝试使用IntentService,它应该生成自己的线程,但我除了头痛什么也没得到。当工人是独立的时,IntentService似乎还不错,但这里不是这种情况,因为每次我需要更改曲目时,我都需要从主应用程序调用startService(intent)方法,而我不想最终得到多个MediaPlayer实例,它们会相互叠加播放。

我还看到一个提示建议在Service内部使用Thread。我该如何使用Media Player?声明应该在那个线程中还是只有“prepare/start等”?从我看到的来看,似乎这样做不起作用,但我可能只是实现错误了。

非常感谢任何提示,最好附带一个非常简单的示例。

谢谢


嗨,我想知道你最终决定使用哪个类,因为我有完全相同的用例,但不确定是使用IntentService还是Service。 - CommonSenseCode
1个回答

6
我强烈建议您阅读此处的培训文档:http://developer.android.com/guide/components/services.html 对我非常有帮助。NPR应用程序可以流式播放音频,因此请查看其服务:http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/PlaybackService.java 阅读这两个文档后,我建议您使用Service并自己处理线程。我还没有使用IntentService,但从您的经验来看,它似乎不是处理音乐流的正确类。希望能帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接