Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android周期同步_Android - Fatal编程技术网

Android周期同步

Android周期同步,android,Android,我有一个SyncAdapter,需要每午夜同步一次。我正在使用ContentResolver.addPeriodicSync执行定期同步,但我不知道如何在午夜触发它 我考虑过几个选择,但没有一个是完全正确的: 设置一个在午夜触发的警报(使用AlarmManager),启动一个带有同步意图的广播,并在每个活动中注册/注销接收器 与1类似,但使用服务。该服务在启动时启动并无限期运行 关于如何正确执行此操作,您有什么想法吗?来自《Android同步适配器指南》: 请注意,addPeriodicSync

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

我考虑过几个选择,但没有一个是完全正确的:

  • 设置一个在午夜触发的警报(使用
    AlarmManager
    ),启动一个带有同步意图的
    广播
    ,并在每个
    活动中注册/注销接收器
  • 与1类似,但使用
    服务
    。该服务在启动时启动并无限期运行

  • 关于如何正确执行此操作,您有什么想法吗?

    来自《Android同步适配器指南》:

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

    jlhonora您的评论是正确的:


    通过随机启动报警和报警,可以避免尖峰 使用AlarmManager.setInexactRepeating触发它

    因此,使用AlarmManager是正确的,但应考虑随机启动


    有关我参考的完整指南,请参见。

    为什么需要在午夜?这不会一下子导致大规模流量峰值吗?通过随机启动警报并使用
    AlarmManager触发警报可以避免峰值。setInexactRepeating
    。同步适配器也会做同样的事情,那么为什么需要在午夜进行呢?@ianhanniballake用户输入数据,他们应该手动上传数据(只要他们准备好了)。他们可能会忘记手动同步,因此数据将每天同步一次。我不能在他们处理数据时进行同步,因为我可能正在同步未完成的工作。这就是为什么午夜是一个不错的选择,在他们处理数据时同步数据的可能性较小。