我有个问题。我看到了这个答案:Background music Android
我不知道这是不是最好的方法,但问题是:当你改变行为时会发生什么?当你改变你的活动时,你怎么能继续播放背景音乐呢?你需要创建一个新的BackgroundSound线程吗?
我需要在后台播放音乐,但找不到最好的方法。我认为在每个活动中创建一个MediaPlayer不是最好的方法。
发布于 2015-05-04 08:01:03
如果你真的想让你的音乐在你的应用程序被放到后台,并且在Android屏幕上显示其他东西的时候播放,那么你可以做另一个问题的提问者使用的解决方案:启动一个播放音乐的服务。
如果你想让背景音乐只在你的应用程序处于前台时播放,那么你可以走AsyncTask的路线。如果您这样做,那么您只需要一个AsyncTask。只需记住,将在处理不同活动的UI线程上调用onPreExecute和onPostExecute回调。
请记住,如果您使用AsyncTask播放背景音乐,其他AsyncTask不能同时运行,因为默认情况下,它们都共享相同的背景线程。
编辑:由于你需要与你的背景音乐互动,那么你可能应该制作一个服务,并使用意图与它进行交流。
我不会写一篇关于如何制作服务的教程,因为已经有很多了。你可以快速搜索一下,然后拿到一些东西。
在该服务中,您希望创建一个LocalBroadcastManager。
myLocalManager = LocalBroadcastManager.getInstance(getApplicationContext());向其注册BroadcastReceiver和IntentFilter。
让BroadcastReceiver检查它获得的关于您希望背景音乐做什么的信息的意图,然后执行它。最简单的方法是在你的活动中加入一个额外的东西,然后在你的服务中把它拿出来。
让IntentFilter类似于"my.app.package.BackgroundMusic“,以避免名称冲突。
然后,让您的各种活动获得它们自己的LocalBroadcastManager实例,然后调用sendBroadcast来告诉服务该做什么。当您构建意图时,您希望使用与用于创建IntentFilter的名称相同的名称,以便它将触发您编写的BroadcastReceiver。
https://stackoverflow.com/questions/30020172
复制相似问题