如何创建多个同时触发但队列执行的警报?

时间:2012-09-13 09:22:32

标签: java android alarmmanager

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

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

1 个答案:

答案 0 :(得分:1)

2个简单的选项是:

  1. 每半小时只有一次报警。每次开火,检查你是否在午夜。如果您在午夜,则运行这两项服务。
  2. 您可以在单个IntentService或@ commonsware的WakefulIntentService中运行闹钟。这些类旨在自动排队,而不是同时运行。这样,当一个服务完成时,另一个服务将自动启动,即同步是自动的。
  3. 就个人而言,我会使用第一个选项(我已经看过@commonsware推荐它,所以我认为它可能是最好的选择)。

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