Android背景音乐

时间:2015-05-03 22:34:33

标签: android android-mediaplayer

我有一个问题。我看到了这个答案:Background music Android

我不知道这是不是最好的方式, 但问题是:当您更改活动时会发生什么?如何更改活动时如何继续播放背景音乐? 你需要创建一个新的BackgroundSound线程吗?

我需要在后台播放音乐,但找不到最好的方法。我认为在每个Activity中创建一个MediaPlayer并不是最好的方式。

1 个答案:

答案 0 :(得分:1)

如果您真的希望在将应用程序放到后台并且Android屏幕上显示其他内容时播放您的音乐,那么您可以使用其他问题的提问者使用的解决方案:启动服务播放音乐。

如果您希望仅播放应用程序位于前台的背景音乐,则转到AsyncTask的路径。如果你这样做,那么你只需要一个AsyncTask。其生命周期独立于Activity生命周期。请记住,将在处理不同Activity的UI线程上调用onPreExecute和onPostExecute回调。

请记住,如果你使用AsyncTask播放背景音乐,那么没有其他AsyncTask可以同时运行,默认情况下,它们共享相同的后台线程。

编辑:由于您需要与背景音乐进行互动,因此您应该制作服务并使用Intents与其进行通信。

我不会写一篇关于如何制作服务的教程,因为那里已有很多。你可以快速搜索并选择一些东西。

在该服务内部,您想要创建一个LocalBroadcastManager。

myLocalManager = LocalBroadcastManager.getInstance(getApplicationContext());

向其注册BroadcastReceiver和IntentFilter。

让BroadcastReceiver检查它获取的意图,以获取有关您希望背景音乐做什么的信息,然后再进行操作。最简单的方法是在您的Activity中添加一个额外的内容,然后在您的服务中获取它。

让IntentFilter像" my.app.package.BackgroundMusic"避免名字冲突。

然后,让您的各种活动获得自己的LocalBroadcastManager实例,然后调用sendBroadcast告诉服务该做什么。在构造意图时,您希望使用与用于制作IntentFilter的名称相同的名称,以便它将触发您编写的BroadcastReceiver。