如何正确解开服务

Rap*_*ard 5 service android bind ondestroy

我有一个与BIND_AUTO_CREATE绑定到我的Activity的服务,并以START_STICKY开头.我没有显式调用startService().

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

这是我的问题:

  1. 如果我希望我的服务在我的Activity活着时运行,并在我的Activity被杀死时停止,我应该在哪里取消绑定我的服务?

  2. 当前调用onDestroy()方法并调用unbindService()时,不会触发Service的onUnbind()方法.为什么?

kir*_*wka 4

我没有显式调用 startService()

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

1.如果我希望我的Service在我的Activity存活时运行并在我的Activity被杀死时停止,我应该在哪里解绑我的Service?

如果你不想在 中进行onPause,可以在 中解绑onDestroy,这样就可以了。在极少数情况下,当您的 Activity 被杀死而onDestroyAndroid 不会解除绑定(因此您的服务也将被正确解除绑定和销毁),如下所述

当你的客户端被销毁时,它将与服务解除绑定

至于

2.当前调用onDestroy()方法时,我调用unbindService(),不会触发Service的onUnbind()方法。为什么?

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