我有一项服务可以打开与设备的蓝牙连接。我需要从2个活动中访问此连接。我知道如何将一个活动绑定到一个服务,但如果我需要将两个活动绑定到一个服务,该怎么办。
如果我绑定到服务的第二个活动,它是否会创建服务的第二个实例?
答案 0 :(得分:2)
另一个答案是不正确的(我不认为他们阅读了自己的文档参考)。您可以多次绑定到服务而不会出现任何问题。与服务的每个连接都将彼此独立地运行,并且它们的ServiceConnection对象将反映它们独立连接和断开的时间。
清单中定义的服务只会有一个实例。第一次绑定客户端时,将创建服务对象。每个新客户端不创建该服务的新对象实例。但是当最后一个客户端未绑定时,onStartCommand会破坏服务(只要它当前不是“已启动”)。
您可以在代码中使用适当的日志语句来验证所有这些行为。
答案 1 :(得分:0)
会创建服务的第二个实例吗?
是的,确实
但是,同一服务的多个实例不能同时运行!
您的问题的可能解决方案是:在onResume()
方法中绑定服务,并在onPause()
方法中解除绑定。这允许您为服务提供两个不相关的活动访问权限,而一次只能绑定一个。
有关详细信息,请阅读以下问题:
另外,请考虑阅读local bound services
上的这篇文章