我有一项服务,我用它来播放多种活动的背景音乐。现在它播放所有适当的活动,但是当按下主页按钮时我无法关闭它。游戏将关闭但音乐仍在播放。我尝试过使用onUserLeaveHint方法,但只要切换到不同的活动就会关闭音乐。不只是当我离开游戏时。
答案 0 :(得分:1)
所有活动都应该绑定到服务。因为只有当一个或多个活动绑定到服务时,服务才有效。因此,如果没有绑定到您的服务,那么该服务将被销毁。请检查此answer如何绑定/取消绑定服务。因此,请避免使用starservice()
(然后您必须调用stopservice()才能破坏您的服务),使用bindservice()
启动服务 - 请注意,在这种情况下,只会调用onCreate()服务
答案 1 :(得分:0)
你考虑过使用片段吗?如果您要使用片段,则可以在主活动的onStop()方法中停止音频服务。如果您不希望/不能为您的应用程序使用片段,则必须从每个活动的onStop()停止服务,或者在每个活动中实现广播接收器:{{3} }
答案 2 :(得分:0)
只是利用这样一个事实:当从一个活动转换到另一个活动时,第二个的onStart()会在另一个的onStop()之前被调用。
鉴于这一点,以及绑定了BIND_AUTO_CREATE标志的服务在没有绑定活动时被销毁的事实(检查另一个answer),您可以在任何活动中绑定到该服务onStart()方法并在onStop()中取消绑定。
每当您进行活动转换时,都会有一个活动绑定活动,但是当当前活动处于后台时(由于回家或来电),只会调用onStop(),因此服务将无限制。