我有一个服务,在页面加载时播放音乐,并按原样继续播放所有其他页面。它仍然在应用程序被销毁时播放,所以我放了一个onDestroy方法和一个onResume方法。
@Override
public void onDestroy(){
super.onDestroy();
Intent ServiceMusic = new Intent(this, BackgroundMusic.class);
stopService(ServiceMusic);
}
@Override
public void onResume(){
super.onResume();
Intent ServiceMusic = new Intent(this, BackgroundMusic.class);
startService(ServiceMusic);
}
现在的问题是,当用户点击服务进行的主页按钮时,我实现了一个onPause并且工作正常,就在用户转到另一个页面时音乐重新开始。
@Override
public void onPause(){
super.onPause();
Intent ServiceMusic = new Intent(this, BackgroundMusic.class);
stopService(ServiceMusic);
}
我如何克服这一点,以便音乐在通过应用程序时继续播放,但是当点击主页按钮时我会暂停服务?
答案 0 :(得分:1)
我会删除单个活动中的代码,并在应用程序子类中使用registerActivityLifecycleCallbacks
机制。这样您就可以将代码保存在一个位置,并且更加智能地启动和停止服务。
请注意,通过这些回调,您会在另一项活动开始之前收到有关活动已停止的通知,因此当您决定停止服务时,您将需要某种延迟。您可以使用具有延迟runnable的处理程序来解决此问题。