帐户同步每分钟

时间:2012-06-30 08:09:27

标签: android android-syncadapter

在我的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小时)。但我的同步适配器仍然每分钟触发一次。我究竟做错了什么? (同步本身没有任何问题)

2 个答案:

答案 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分配正确的值并没有解决我的问题。