我有一个通过 BIND_AUTO_CREATE 绑定(bind)到我的 Activity 并以 START_STICKY 启动的服务。我没有明确调用 startService()。
由于当我的 Activity 被杀死时并不总是调用 onDestroy() 方法并且 onStop() 方法不可行,因为我不希望我的服务在用户只需按下主页按钮时停止,我不知道何时取消绑定(bind)我的服务。
这是我的问题:
如果我希望我的服务在我的 Activity Activity 时运行并在我的 Activity 被终止时停止,我应该在哪里取消绑定(bind)我的服务?
当前调用 onDestroy() 方法并且我调用 unbindService() 时,不会触发服务的 onUnbind() 方法。为什么?
最佳答案
I do not explicitly call startService()
在这种情况下,覆盖 onStartCommand
(并返回 START_STICKY
)没有意义,因为它不会被调用。
1.If I want my Service to run when my Activity is alive and to stop when my Activity get killed, where should I unbind my Service?
如果你不想在onPause
中进行,你可以在onDestroy
中解除绑定(bind),这样就可以了。在极少数情况下,当您的 Activity 在没有 onDestroy
的情况下被杀死时,它将被 Android 解除绑定(bind),(因此您的服务也将被解除绑定(bind)并正确销毁),如所述 here :
When your client is destroyed, it will unbind from the service
至于
2.When the onDestroy() method is currently called and I call unbindService(), the Service's onUnbind() method isn't triggered. Why?
我建议你有其他人绑定(bind)它,否则应该调用onUnbind
。尝试在此方法中放置一个断点并验证它是否被命中。此外,验证您的服务 onDestroy
在这种情况下被调用。
关于android - 如何正确解绑服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939761/