我的同步适配器确实能很好地工作,除了在过去的几个小时里我发现了一些小问题...对于我的应用程序我希望同步适配器以10秒的间隔运行。
ContentResolver.addPeriodicSync(mAccount, AUTHORITY, Bundle.EMPTY, 5);
同步是每隔60秒而不是请求的5秒开始。当我将interval
更改为70秒时,同步每70秒开始一次。
从日志文件中:
W/ContentService﹕ Requested poll frequency of 5 seconds being rounded up to 60 seconds.
或者,为了确保ContentService占用了我的间隔,当我将间隔更改为13秒时:
W/ContentService﹕ Requested poll frequency of 13 seconds being rounded up to 60 seconds.
有人知道这次回合的原因吗?
在我的摩托罗拉XT上发生了Android 5.0.2(Api等级22)。
尝试使用模拟器Android 4.0.4(Api等级15),它只在没有日志消息的情况下执行相同操作,而不是60秒,间隔更改为30秒。所以必须有一些我不知道的限制。
谢谢,如果需要更多信息,请与我们联系。
答案 0 :(得分:8)
似乎无法添加间隔小于60秒的周期同步。 (或者至少从4.4或更高。)
if (request.isPeriodic()) {
mContext.enforceCallingOrSelfPermission(
Manifest.permission.WRITE_SYNC_SETTINGS,
"no permission to write the sync settings");
if (runAtTime < 60) {
Slog.w(TAG, "Requested poll frequency of " + runAtTime
+ " seconds being rounded up to 60 seconds.");
runAtTime = 60;
}
PeriodicSync syncToAdd =
new PeriodicSync(account, provider, extras, runAtTime, flextime);
getSyncManager().getSyncStorageEngine().addPeriodicSync(syncToAdd, userId);
}
答案 1 :(得分:0)
W / ContentService:请求的轮询频率为300秒 四舍五入到达900s。
似乎在Android 7和8上最低频率为15分钟。 直到Android 6我们有一个高达60秒的回合,这是不错的。
我还注意到我们在pollFrequency上有一个注释,即1h是最小的。
pollFrequency long:以秒为单位的时间量...强制执行最短1小时的时间。
这对我来说似乎很不一致。
答案 2 :(得分:0)
这里的问题是android源代码中的文档错误。
实际值是:
其他信息:
PS:addPeriodicSync(...)的文档关于API 24之前的pollFrequency参数是错误的,我已经打开了issue,等待Google对其进行修复。