繁体   English   中英

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

[英]How to bind multiple activities to a service

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

如果将第二个活动绑定到服务,它将创建服务的第二个实例吗?

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

清单中定义的服务将永远只有一个实例 第一次绑定客户端时,将创建服务对象。 每个新客户端都不会创建该服务的新对象实例。 但是,当最后一个客户端解除绑定时,服务将被onStartCommand销毁(只要它当前还没有“启动”即可)。

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

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

是的,它确实

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

解决您的问题的可能方法是:将Service绑定到onResume()方法中,并将其取消绑定到onPause()方法中。 这使您可以为两个不相关的活动授予对该服务的访问权限,而一次只能绑定一个。

有关更多信息,请阅读以下问题:

另外,请考虑阅读有关本地绑定服务的本文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM