我在我的应用程序中添加了一个 SyncAdapter,它将数据从服务器同步到 Android 中的 sqlite 数据库。我正在使用 stub ContentProvider
。我为我的 syncAdapter 启用了 setSyncAutomatically
和 addPeriodicSync
。我已将定期同步间隔设置为 15 分钟。
问题是,虽然大多数时候它工作得很好,但有时我的应用程序开始重复同步,比如 2-3 一个接一个地同步。
我认为这可能是由于使用了 setSyncAutomatically
,但如果我删除了它,那么我必须手动转到设置并启用我的应用程序的自动同步。
我的代码-
ContentResolver.setIsSyncable(newAccount, Constant.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(newAccount, Constant.AUTHORITY, true);
ContentResolver.addPeriodicSync(newAccount, Constant.AUTHORITY, new Bundle(), Constant.SYNC_FREQUENCY);
有没有一种方法可以为我的 syncAdapter 设置一个最小间隔,以便它在这个时间间隔之前不会再次执行?
最佳答案
没有最小同步间隔,但您可以自己跟踪。如果最小间隔还没有过去,只需存储上次同步时间并在不同步的情况下退出同步适配器。
但是,正确的解决方案是首先找出触发这些额外同步的原因。
使用 setSyncAutomatically()
启用自动同步意味着每当内容提供者使用 ContentResolver.notifyChange(...)
发布更改通知时,Android 应该触发同步将 syncToNetwork
参数设置为 true
。对于同步适配器所做的更改,您应该确保永远不要将此参数设置为 true
。
关于Android SyncAdapter 最小时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547305/