我有一项与BIND_AUTO_CREATE绑定(bind)到我的 Activity 的服务,并且以START_STICKY开头。我没有明确调用startService()。

由于当我的Activity被杀死时onDestroy()方法并不总是被调用,而onStop()方法并不可行,因为我不希望用户仅按下Home按钮时就停止服务,所以我不知道何时取消绑定(bind)我的服务。

这是我的问题:

  • 如果我希望我的服务处于 Activity 状态时运行我的服务,而当我的 Activity 被杀死时希望它停止,我应该在哪里取消绑定(bind)服务?
  • 当前调用onDestroy()方法并且我调用unbindService()时,不会触发服务的onUnbind()方法。为什么?
  • 最佳答案



    在那种情况下,覆盖onStartCommand(并返回START_STICKY)是没有意义的,因为它不会被调用。



    如果您不想在onPause中执行此操作,则可以在onDestroy中取消绑定(bind),这很好。如here所述,在极少数情况下,您的 Activity 在没有onDestroy的情况下被杀死,因此它将被Android解除绑定(bind)(因此,您的服务也将被解除绑定(bind)和正确销毁):



    至于



    我建议您绑定(bind)其他人,否则应调用onUnbind。尝试在此方法中放置一个断点,并验证它是否被命中。另外,请验证在这种情况下是否调用了服务onDestroy

    10-07 19:14
    查看更多