我使用带有多个片段的 ActionBar 选项卡。每个片段都包含一个基于我的计时器服务的计时器。当我停止我的第一个计时器(停止计时器服务)时,第二个计时器也停止了,我想那是因为它们正在运行相同的服务。
是否可以区分另一个片段是否正在使用该服务,或者是否可以为每个计时器启动单独的服务?或者还有其他方法吗?
我一直在寻找解决方案一段时间了,我现在有点迷茫。
在没有看到您的代码的情况下:对该方法的调用startService
将在服务未运行时启动服务,或者onStartCommand
在服务已启动时调用。当计时器启动时,您可以调用startService
并增加一个值(例如int
表示实时计时器的值)。当计时器需要停止/完成时,您可以BroadcastReceiver
在Service
(如您显示的链接中)中实现 a 以侦听来自其他组件的“关闭”广播(您可以使用此模式让Service
知道新计时器已开始(“开始”广播))。
从那你BroadcastReceiver
会Service
减少实时计时器计数,看看你是否在0
,如果是这种情况,然后停止Service
。
上述方法的主要问题是何时可靠关闭Service
即使其他活动被杀死并且没有重新启动,因此它们无法广播所需的计时器关闭意图(如果其他活动被杀死并且没有重新启动服务可能是留下一些注册的计时器,你不希望服务无限期地运行)。要解决这个问题,需要有关您的实际代码的更多详细信息。