多个计时器使用相同的服务

时间:2012-08-10 12:15:57

标签: android service

我使用带有多个片段的ActionBar标签。每个片段包含一个基于我的计时器服务的计时器。当我停止第一个计时器(停止计时器服务)时,第二个计时器也会停止,我猜这是因为他们正在运行相同的服务。

如果另一个片段正在使用该服务,或者可能为每个计时器启动单独服务,是否可以解除?还是有另一种方式吗?

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

1 个答案:

答案 0 :(得分:0)

如果没有看到您的代码:对方法startService的调用将在未运行时启动服务,或者如果服务已启动则调用onStartCommand。当计时器启动时,您可以调用startService并增加一个值(例如表示实时计时器的int值)。当计时器需要停止/结束时,你可以在BroadcastReceiver中实现Service(就像在你显示的链接中一样)来监听来自其他组件的“近距离”广播(你可以使用)这个模式让Service知道新的计时器已经启动(“开始”广播)。

在来自BroadcastReceiver的{​​{1}}中,您将减少实时计时器的数量,看看您是否在Service,如果是这种情况,请停止0

上述方法的主要问题是何时可靠地关闭Service,即使其他活动被杀死也没有重新启动,因此他们无法广播所需的计时器关闭意图(如果其他活动被杀死)并且没有重新启动服务可能会留下一些注册的计时器,你不希望服务无限期地运行)。要解决此问题,需要有关实际代码的更多详细信息。