我正在开发一个有四个活动的应用程序。当应用程序打开时,我正在播放一个背景音乐,应该继续播放所有的活动。但是当应用程序转到后台时,音乐应该暂停,当应用程序恢复时,音乐应该再次继续。
请提出实现这一目标的最佳方法。
谢谢,阿南德。
发布于 2015-09-17 09:49:07
阿南德,你需要停止你的音乐,当活动成为背景。
@Override
protected void onPause() {
super.onPause();
//stop or pause your music here.
}
当活动恢复时,你需要播放你的音乐。
@Override
protected void onResume() {
super.onResume();
// play your music here.
}
发布于 2015-09-10 18:43:08
这取决于你是如何演奏音乐的。答案几乎肯定是使用生命周期方法。对于该活动,我认为最好的重写方法是onResume和onPause。当活动出现在前台并分别隐藏时,将调用这些方法。服务有自己的生命周期,但其行为方式不同。
编辑:只需仔细阅读问题即可。要在多个活动之间做到这一点,音乐应该通过绑定服务播放。通过选择服务绑定和未绑定的位置,它将在活动转换之间保持活跃。我认为,当创建新活动时,在暂停之前调用onResume。因此,您将服务绑定到onResume中的新活动,并将其从onPause中的旧活动中解除绑定。当activitys关闭时,调用相同的方法,但调用相反的活动。
编辑2:您还可以将活动绑定到onCreate和onDestroy中的服务。这将导致服务持久化,直到操作系统删除所有活动或应用程序关闭为止。这意味着您还需要服务上的播放和暂停方法,以及确保只有正确的活动才能调用它们的机制。当您调用playMusic函数时,您可以提供一个对象作为令牌。当您调用“暂停”或“停止”时,再次提供该令牌。其结果将是,只有最近调用play的活动才能停止音乐,而所有活动在绑定到服务或调用onResume时调用play。
https://stackoverflow.com/questions/32508149
复制相似问题