应用程序被销毁时停止背景音乐
Posted
技术标签:
【中文标题】应用程序被销毁时停止背景音乐【英文标题】:Stopping Background Music When App is destroyed 【发布时间】:2011-05-31 21:36:24 【问题描述】:我正在制作一个安卓游戏,我有一个播放背景音乐的服务。我使用两个按钮来启动和停止 Title/Menu 活动中的音乐。我遇到的问题是,如果在您接到电话或退出应用程序时音乐一直处于打开状态,则音乐仍在播放,直到您转到应用程序并将其关闭。
【问题讨论】:
那么按钮有什么作用呢?您不能在适当的onPause
方法中重新创建此行为吗?
一个开始播放音乐,另一个停止播放。我不确定我会怎么做。
您的游戏活动中有onPause
。在那里,插入您用来停止音乐的相关代码。
【参考方案1】:
最好的方法是在 onPause() 或 onStop() 中发送一个命令来停止音乐。根据您的 cmets,您似乎已经知道如何停止音乐。您还需要在相应的命令中启动音乐。我建议使用 onPause()。见the lifecycle of an activity。
【讨论】:
我在服务内部有一个 onPause() 和一个 onStop 方法,我正在考虑将一个放在活动本身的一侧。但我不确定我会怎么做,因为我是通过按钮调用服务的。【参考方案2】:如果您仍想在 Service 中播放音乐,则需要从 Activity(您了解生命周期事件的地方)与 Service(可以播放/停止音乐的地方)进行通信。
在 android 中,您通过将服务绑定到一个活动来做到这一点。参见例如Bound Services,或网络上的许多其他文章(例如 here)。
背后的想法是您使用自定义 API 创建一个类/对象。这个对象可以被 Activity 代码使用。当您调用此 API 上的方法时,Android 实际上会将此调用分派给服务。通过这种方式,您可以在代码中的某个位置启动一个 Service,然后您可以通过使用它的 Binder 来获取它。
HTH
【讨论】:
以上是关于应用程序被销毁时停止背景音乐的主要内容,如果未能解决你的问题,请参考以下文章
加载新场景时如何销毁标记为“DontDestroyOnLoad”的游戏对象?