我有两个警报,它们触发两个独立的服务——一个每半小时执行一次,另一个每半小时执行一次。在任何一天的 00:00,这两个服务都将被执行并且需要共享一个公共文件。当两个警报都被触发时,我有没有办法一个接一个地执行这两个服务(最好是半小时一个,然后是午夜一个)?
我已经尝试使文件访问器方法同步(这样服务将不得不等待另一个完成),但这并不能让我控制哪些服务首先执行。
我有两个警报,它们触发两个独立的服务——一个每半小时执行一次,另一个每半小时执行一次。在任何一天的 00:00,这两个服务都将被执行并且需要共享一个公共文件。当两个警报都被触发时,我有没有办法一个接一个地执行这两个服务(最好是半小时一个,然后是午夜一个)?
我已经尝试使文件访问器方法同步(这样服务将不得不等待另一个完成),但这并不能让我控制哪些服务首先执行。
2个简单的选项是:
IntentService
,或@commonsware's中运行WakefulIntentService
。这些类旨在自动排队,而不是同时运行。这样,当一个服务完成时,另一个服务将自动启动,即同步是自动的。就个人而言,我会使用第一个选项(我已经看到@commonsware 推荐它,所以我认为它可能是最好的路线)。
这很简单,不依赖于太多额外的类,并且您可以完全控制在什么时间运行哪个服务。您还只需要一个警报,而不是 2 个,我认为这将更容易维护,并且在功耗方面稍好一些。