如何将多个活动绑定到服务

时间:2016-02-11 00:13:43

标签: android android-activity service bluetooth

我有一项服务可以打开与设备的蓝牙连接。我需要从2个活动中访问此连接。我知道如何将一个活动绑定到一个服务,但如果我需要将两个活动绑定到一个服务,该怎么办。

如果我绑定到服务的第二个活动,它是否会创建服务的第二个实例?

2 个答案:

答案 0 :(得分:2)

另一个答案是不正确的(我不认为他们阅读了自己的文档参考)。您可以多次绑定到服务而不会出现任何问题。与服务的每个连接都将彼此独立地运行,并且它们的ServiceConnection对象将反映它们独立连接和断开的时间。

清单中定义的服务只会有一个实例。第一次绑定客户端时,将创建服务对象。每个新客户端创建该服务的新对象实例。但是当最后一个客户端未绑定时,onStartCommand会破坏服务(只要它当前不是“已启动”)。

您可以在代码中使用适当的日志语句来验证所有这些行为。

答案 1 :(得分:0)

  

会创建服务的第二个实例吗?

是的,确实

但是,同一服务的多个实例不能同时运行!

您的问题的可能解决方案是:在onResume()方法中绑定服务,并在onPause()方法中解除绑定。这允许您为服务提供两个不相关的活动访问权限,而一次只能绑定一个。

有关详细信息,请阅读以下问题:

另外,请考虑阅读local bound services

上的这篇文章