5

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

4

2 回答 2

4

SyncResult.stats自己解决了:当与 ContentResolver-Operations 不匹配时,同步适配器会重复。当它们匹配时,同步按预期触发。

更新:另一个问题是,我在同步操作期间调用了 ContentResolver.notifyUpdate。删除它,这很好。

于 2012-07-09T11:16:14.353 回答
1

SyncAdapter每分钟都在跑步,不尊重pollFrequency间隔。我只使用查询将本地数据发送到远程服务器(在 上SyncAdapter)。我没有更新SyncAdapter.

但是我的本地数据正在使用其他服务以非常短的时间间隔更新(从 BLE 设备接收数据)。

为了解决这个问题,我必须更改notifyChange对我的数据提供者的所有调用以包含附加参数syncToNetwork: false(查看notifyChange文档)。

//getContext().getContentResolver().notifyChange(uri, null);
getContext().getContentResolver().notifyChange(uri, null, false);

此更改不会影响我CursorAdapterActivity更新表格后立即显示数据的方式。

分配适当的值syncResult.stats并没有解决我的问题。

于 2017-12-26T20:55:44.157 回答