8

嗨,我需要一个 MediaPlayer 实例在后台运行,所以我开始使用服务。

一切正常,但一段时间后我得到 ANR(应用程序无响应),即使 UI 工作正常。很公平,我知道服务仍在主线程上运行,所以 ANR 是有意义的。

所以我尝试使用 IntentService,它应该会产生自己的线程,但我除了头痛什么都没有。当工作人员独立时,IntentService 似乎没问题,但这里情况并非如此,因为每次我需要更改轨道时,我都需要从主应用程序调用 startService(intent) 方法,并且我不想以多个 MediaPlayer 实例结束互相玩。。

我还看到了一个提示,建议在服务中使用线程。如何使用媒体播放器做到这一点?声明应该在那个线程中还是只是“准备/开始等”?据我所见,这似乎不起作用,但我可能只是错误地实施了它

任何提示都非常感谢,可能有一个非常简单的例子。

干杯

4

1 回答 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

阅读这两个,我建议使用服务并自己处理线程。我还没有与 IntentService 合作过,但根据您的经验,处理音乐流似乎是错误的课程。希望有帮助!

于 2012-12-07T08:27:11.240 回答