应用程序被销毁时停止背景音乐

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”的游戏对象?

Android MediaPlayer 背景音乐线程随机停止

每当我的应用播放音乐时如何停止其他应用音乐

活动停止/关闭时音乐服务停止?

当应用程序被杀死时反应原生背景地理定位