Android SyncAdapter 最小时间间隔

标签 android android-syncadapter

我在我的应用程序中添加了一个 SyncAdapter,它将数据从服务器同步到 Android 中的 sqlite 数据库。我正在使用 stub ContentProvider。我为我的 syncAdapter 启用了 setSyncAutomaticallyaddPeriodicSync。我已将定期同步间隔设置为 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/

相关文章:

Android MockWebServer 调度程序问题

android - 如何禁用 gridview 的过度显示?

android - OnUpdate() 不调用小部件服务

android - SyncAdapter 中提交的 SharedPreference 未在 Activity 中更新?

android - java.lang.IllegalArgumentException : Service Intent must be explicit: Intent

android - NavigationDrawer,带有图像的适配器

android - onOverrideUrlLoading 不允许我更改 Cordova Infobip 推送通知插件中的 url

没有身份验证 token 的android联系人同步

android - 人们如何在 Sync Adapter 和 Firebase for Android App 之间做出选择