使用同一服务的多个计时器(Multiple timers using same service)

2019-09-21 02:31发布

我用动作条卡口与多个片段。 每个片段包含基于我的计时器服务计时器。 当我停止我的第一个定时器(定时器停止服务)的第二计时器停止藏汉,我想这是因为他们正在运行相同的服务。

是否有可能distiguish如果另一个片段使用服务或可能为每个定时器启动各个服务? 还是有做的另一种方式?

我一直在寻找了一段时间的解决方案,现在,我有点现在丢失。

Answer 1:

没有看到你的代码:对方法的调用startService ,如果它没有运行要么启动该服务,或致电onStartCommand如果该服务已经启动。 当启动一个定时器,你可以调用startService和增量的值(例如int代表现场计时器值)。 当计时器需要停止/完成,你可以实现一个BroadcastReceiverService (如在链接,你已经证明)来监听“关闭”播出从其他组件来(你可以使用这个模式,让Service知道一个新的计时器已经开始(“开始”广播))。

BroadcastReceiverService ,你会递减现场定时器计数,看看你是在0 ,如果是这样,则情况下停止Service

上述方法的主要问题是什么时候能可靠关闭的Service ,即使其他活动被杀而没有得到重新启动,使他们不能播放所需的计时器关闭意向(如果其他活动被打死,而不是重新启动该服务可能会留下一些注册定时器,你不会希望服务无限期运行)。 为了解决这个问题,将需要约你的实际代码的更多细节。



文章来源: Multiple timers using same service