帐户同步每分钟

问题描述 投票:5回答:2

在我的AccountAuthenticatorActivity中,我尝试使用以下行在addAccountExplicitly之后为帐户设置sync-options:

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

android android-syncadapter
2个回答
4
投票

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

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


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分配适当的值并没有解决我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.