Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击“主页”按钮时停止服务?_Java_Android - Fatal编程技术网

Java 单击“主页”按钮时停止服务?

Java 单击“主页”按钮时停止服务?,java,android,Java,Android,我有一个服务,它在页面加载时播放音乐,并按照它应该的方式继续到所有其他页面。当应用程序被销毁时,它仍在播放,所以我使用了onDestroy方法和onResume方法 @Override public void onDestroy(){ super.onDestroy(); Intent ServiceMusic = new Intent(this, BackgroundMusic.class); stopService(ServiceMusic); } @Overrid

我有一个服务,它在页面加载时播放音乐,并按照它应该的方式继续到所有其他页面。当应用程序被销毁时,它仍在播放,所以我使用了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);
}
现在的问题是,当用户点击home按钮时,服务就会继续,所以我实现了onPause,它工作得很好,就在用户转到另一个页面时,音乐就会重新启动

@Override
public void onPause(){
    super.onPause();
    Intent ServiceMusic = new Intent(this, BackgroundMusic.class);
    stopService(ServiceMusic);
}

如何克服这一问题,使音乐在通过应用程序时继续播放,但当单击“主页”按钮时,我会暂停服务?

我会删除各个活动中的代码,并在应用程序子类中使用
registerActivityLifecycleCallbacks
机制。这将允许您将代码保存在一个地方,并在启动和停止服务时更加智能

请注意,通过这些回调,您将收到一个活动在另一个活动开始之前已经停止的通知,因此当您决定停止服务时,您将需要某种延迟。您可以使用具有延迟runnable的处理程序来解释此问题