我有一个活动A,可以通过点击按钮启动音乐服务,也可以选择在另一个按钮点击时启动另一个活动B.我希望在使用应用程序时在后台播放音乐。当它没有被使用时(活动A和B都不可见)我希望音乐停止。
我尝试使用startService(mMusicIntent)
在按钮点击时从活动A启动服务,并使用stopService(mMusicIntent)
以类似的方式停止。实际上,当我在A和B之间跳转时,音乐确实会继续播放,但是如果我在活动B中并且我将应用程序放入后台(主页或切换应用程序),则背景音乐服务仍在播放。我只能使用活动A中的onDestroy()
方法停止服务。
有更好的方法吗?我不想在活动和服务之间传递数据(它只是播放音乐),所以我觉得绑定不合适。但我可能是错的。
答案 0 :(得分:0)
我最终使用绑定服务执行此操作。我仍然不知道这是否是做这样的事情的最佳方式,但它具有预期的效果。
活动A在按钮单击时绑定到MusicService。在MusicService中,我们将绑定设置为开始播放音乐。活动A在重新点击按钮或停止活动A时解除绑定。活动B绑定onCreate()并在onStop()时解除绑定。当然,我可能会调整代码,以便选择正确的生命周期对,但这适用于我的用例。