服务可能是要走的路。是否有服务,尽管这通常表明您设计的程序没有应有的强大。即使您确实创建了服务,您仍然需要知道何时暂停和何时恢复。
我实现了一个似乎对我有用的简单解决方案,而无需正确重构整个应用程序以获得更好的应用程序引擎:
在您希望音乐开始的初始活动中启动 mediaPlayer 后:
在初始和每个后续活动中,创建一个成员变量:private boolean mStopTheMusic = true;
然后在您希望音乐继续播放和/或适当停止的每个活动中覆盖以下内容:(注意:正确停止将是当任何其他应用程序而不是您的应用程序进入前台时。这些是停止音乐的适当时间)并且随时您以编程方式在当前活动之上启动一个新活动,设置 mStopTheMusic = false,因此您的背景音乐不会停止。
@Override
public void onResume()
{
super.onResume();
mStopTheMusic = true;
if (!MusicPlayer.IsMusicPlaying())
MusicPlayer.StartMusic();
}
@Override
public void onPause()
{
super.onPause();
if (mStopTheMusic)
MusicPlayer.PauseMusic();
}
@Override
public void onBackPressed()
{
mStopTheMusic = false;
super.onBackPressed();
}