2012-10-26 37 views
6

您好我需要一个MediaPlayer实例在后台运行,所以我开始使用服务。MediaPlayer在单独的线程使用服务或IntentService

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

所以我尝试使用IntentService,它应该产生自己的线程,但我什么也没有,但头痛。当worker是独立的,但IntentService似乎没问题,因为我需要每次需要更改跟踪时从主应用程序调用startService(intent)方法,而且我不想结束使用多个MediaPlayer实例在彼此之上玩。

我还看到了一个提示,建议在服务中使用线程。如何使用Media Player来做到这一点?宣言应该在那个线程中还是仅仅是“准备/开始等”?从我看到的似乎没有工作,但我可能只是实施它错了

任何提示非常赞赏,可能有一个非常简单的例子。

欢呼

+0

嘿我会知道你做了什么你决定我有相同的确切用例,我不知道如果IntentService或只是服务使用哪个类。 – commonSenseCode

回答

4

我强烈建议你读到这里的培训文件: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,但从您的经验来看,它似乎是一个错误的类来处理音乐流。希望有所帮助!