2

我有两个警报,它们触发两个独立的服务——一个每半小时执行一次,另一个每半小时执行一次。在任何一天的 00:00,这两个服务都将被执行并且需要共享一个公共文件。当两个警报都被触发时,我有没有办法一个接一个地执行这两个服务(最好是半小时一个,然后是午夜一个)?

我已经尝试使文件访问器方法同步(这样服务将不得不等待另一个完成),但这并不能让我控制哪些服务首先执行。

4

1 回答 1

1

2个简单的选项是:

  1. 每 1/2 小时只有 1 个警报。每次触发时,检查您是否在午夜。如果您在午夜,则运行这两项服务。
  2. 你可以让你的警报在一个单一的IntentService,或@commonsware's中运行WakefulIntentService。这些类旨在自动排队,而不是同时运行。这样,当一个服务完成时,另一个服务将自动启动,即同步是自动的。

就个人而言,我会使用第一个选项(我已经看到@commonsware 推荐它,所以我认为它可能是最好的路线)。

这很简单,不依赖于太多额外的类,并且您可以完全控制在什么时间运行哪个服务。您还只需要一个警报,而不是 2 个,我认为这将更容易维护,并且在功耗方面稍好一些。

于 2012-09-13T09:28:40.503 回答