我正在使用 aSyncAdapter
和 GCM 来通知我的应用程序后端服务器上的不同类型的更改。例如,如果更改 A 发生在服务器上,我会使用名为 change_a 的字段进行推送通知,并将其传递给SyncAdapter
through ContentResolver.requestSync()
。这样,SyncAdapter
知道从服务器同步什么。同样,对于更改 B,我发送一个名为 change_b 的字段。
除了一个用例外,这非常有效。我发送了一个 change_a 通知,它会调用ContentResolver.requestSync()
,但是因为没有网络可用,所以SyncAdapter
还没有调用。如果在那之后,我发送一个 change_b 通知,再次ContentResolver.requestSync()
使用新字段调用。然后,当网络启动时,SyncAdapter
会调用,但仅使用最新的字段 change_b,因此,它不会同步更改 A。
因此,基本上,ContentResolver.requestSync()
覆盖所有requestSync()
尚未触发 SyncAdapter 的先前调用。SyncAdapter 使用已发送的最新附加功能运行。
对此的一种解决方案是不区分更改 A 和更改 B 并SyncAdapter
同步所有内容。但这对带宽来说是昂贵的。我想控制同步的内容和时间。我可以做些什么来解决这个问题(可能是一个同步适配器标志)?