我需要完美配对 bindService / unbindService 调用吗?

Cre*_*eos 6 java android android-service android-service-binding

从所有代码示例中可以看出,我们只想调用 #unbindService(在同一上下文中),如果我们调用了 #bindService,这是通过布尔检查完成的。

但是在#bindService 调用中没有类似的检查——即我们不检查我们是否已经先绑定以避免“双重绑定”。

所以我的问题——

  1. 如果我多次绑定一个服务但只解绑一次,“会不会发生坏事”,或者如果我绑定一次并解绑多次只会是不好的?这种不对称对我来说似乎很奇怪,但想看看是否有人知道答案。我现在正在尝试解决它,但我更喜欢更有经验的开发人员的“官方”答案。
  2. 什么被认为是“绑定”和“未绑定”操作——是不是我只是调用了#bind(或#unbind)API,并且这些调用必须成对,或者是由#onServiceConnected/Disconnected 回调必须配对?谷歌自己的例子似乎表明前者是正确的,有人可以证实吗?如果前者为真,那么最后一个更微妙的问题是:如果#bindService 返回false,即android 甚至不会尝试连接,因为它无法解析服务,在这种情况下调用#unbindService 是否安全?

谢谢你。

cya*_*ide -2

我怀疑 Android 是否允许多次绑定到同一个服务,但这没有意义。

您绑定到服务并获取一个 Messenger 对象。下次检查时,Messenger 是否为空。如果不是,则无需再次绑定。一旦您的活动结束并且信使不为空,您就可以解除绑定。

详细信息在这里