在我的AccountAuthenticatorActivity
我尝试在addAccountExplicitly
之后设置帐户的同步选项,其中包含以下行:
ContentResolver.setIsSyncable(account, authority, 1);
ContentResolver.setSyncAutomatically(account, authority, true);
int seconds = getResources().getInteger(R.integer.syncFrequencySeconds);
ContentResolver.addPeriodicSync(account, authority, new Bundle(), seconds);
syncFrequencySeconds
设置为86400(每24小时)。但我的同步适配器仍然每分钟触发一次。我究竟做错了什么? (同步本身没有任何问题)
答案 0 :(得分:4)
自己解决:当SyncResult.stats
与ContentResolver-Operations不匹配时,sync-adapter会重复出现。当它们匹配时,会按预期触发同步。
更新:另一个问题是,我在同步操作期间调用了ContentResolver.notifyUpdate。删除了,这很好。
答案 1 :(得分:1)
我的SyncAdapter
每分钟都在运行,不尊重pollFrequency
间隔。我只使用查询将本地数据发送到远程服务器(在SyncAdapter
上)。我没有更新SyncAdapter
上的任何本地数据。
但我的本地数据正在以非常短的时间间隔(使用其他服务从BLE设备接收数据)进行更新。
要解决此问题,我必须更改数据提供商的所有notifyChange
次调用,以包含其他参数syncToNetwork: false
(请查看notifyChange文档)。
//getContext().getContentResolver().notifyChange(uri, null);
getContext().getContentResolver().notifyChange(uri, null, false);
此更改不会影响CursorAdapter
中使用的Activity
,以便在我更新表格后立即显示数据。
为syncResult.stats
分配正确的值并没有解决我的问题。