Android定期同步

时间:2014-07-18 16:36:21

标签: android

我有一个SyncAdapter需要每个午夜同步。我正在使用ContentResolver.addPeriodicSync执行定期同步,但我不知道如何在午夜触发它。

我已经考虑了几个选项,但没有一个看起来很正确:

  1. 设置在午夜触发的闹钟(AlarmManager),以同步意图触发Broadcast,并在每Activity个注册/取消注册接收器。
  2. 与1.类似,但使用Service。该服务在启动时触发并无限期运行。
  3. 有关如何正确执行此操作的任何想法?

1 个答案:

答案 0 :(得分:2)

来自Android同步适配器指南:

  

请注意,addPeriodicSync()不会在一天中的特定时间运行同步适配器。要在每天大致相同的时间运行同步适配器,请使用重复警报作为触发器。 AlarmManager的参考文档中详细介绍了重复报警。如果使用方法setInexactRepeating()来设置具有一些变化的时间触发器,则仍应随机化开始时间以确保从不同设备运行的同步适配器交错。

jlhonora你的评论是正确的:

  

使用警报的随机启动可以避免尖峰   使用AlarmManager.setInexactRepeating

触发它

因此,您使用AlarmManager处于正确的轨道上,但应考虑随机启动。

有关我参考的完整指南,请参阅Running a Sync Adapter periodically