6

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

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

所以我的问题——

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

谢谢你。

4

1 回答 1

-2

I doubt that Android allows to bind to same service several times, but it makes no sense.

You bind to service and get a Messenger object. Next time you check, if messenger is null. If it isn't there is no need to bind again. Once your activity ends and the messenger is not null, you unbind.

The details are here.

于 2015-01-20T23:33:45.413 回答