我有一个SyncAdapter
需要每个午夜同步。我正在使用ContentResolver.addPeriodicSync
执行定期同步,但我不知道如何在午夜触发它。
我已经考虑了几个选项,但没有一个看起来很正确:
AlarmManager
),以同步意图触发Broadcast
,并在每Activity
个注册/取消注册接收器。Service
。该服务在启动时触发并无限期运行。有关如何正确执行此操作的任何想法?
答案 0 :(得分:2)
来自Android同步适配器指南:
请注意,addPeriodicSync()不会在一天中的特定时间运行同步适配器。要在每天大致相同的时间运行同步适配器,请使用重复警报作为触发器。 AlarmManager的参考文档中详细介绍了重复报警。如果使用方法setInexactRepeating()来设置具有一些变化的时间触发器,则仍应随机化开始时间以确保从不同设备运行的同步适配器交错。
jlhonora你的评论是正确的:
使用警报的随机启动可以避免尖峰 使用AlarmManager.setInexactRepeating
触发它
因此,您使用AlarmManager处于正确的轨道上,但应考虑随机启动。
有关我参考的完整指南,请参阅Running a Sync Adapter periodically。