我有一个与BIND_AUTO_CREATE绑定到我的Activity的服务,并以START_STICKY开头。我没有显式调用startService()。
由于当我的Activity被杀死并且onStop()方法不可行时,并不总是调用onDestroy()方法,因为当用户只需按下Home按钮时我不希望我的服务停止,我不会知道什么时候解开我的服务。
以下是我的问题:
如果我希望我的服务在我的Activity活着时运行,并在我的Activity被杀时停止,我应该在哪里取消绑定我的服务?
当前调用onDestroy()方法并调用unbindService()时,不会触发Service的onUnbind()方法。为什么呢?
答案 0 :(得分:3)
我没有显式调用startService()
在这种情况下,覆盖onStartCommand
(并返回START_STICKY
)是没有意义的,因为它不会被调用。
1.如果我希望我的服务在我的Activity活着时运行,并在我的Activity被杀时停止,我应该在哪里取消绑定我的服务?
如果您不想在onPause
中执行此操作,则可以在onDestroy
中取消绑定,这很好。在极少数情况下,当您的活动在没有onDestroy
的情况下被杀死时,它将被Android解除绑定(因此您的服务也将被解除绑定并且也会被正确销毁),如here所述:
当您的客户端被销毁时,它将从服务中取消绑定
至于
2.当前调用onDestroy()方法并调用时 unbindService(),服务的onUnbind()方法没有被触发。为什么呢?
我建议您绑定其他人,否则应调用onUnbind
。尝试在此方法中放置一个断点并验证它是否被击中。另外,请确保在这种情况下调用您的服务onDestroy
。