假设我的应用程序实现了SyncAdapter功能,但没有定义定期同步。在这种情况下,同步会在什么时候发生?我可以考虑的第一种情况是本地ContentProvided/数据库内容更改。
那么如果是服务器端发生更改呢?SyncAdapter如何知道?
假设我的应用程序实现了SyncAdapter功能,但没有定义定期同步。在这种情况下,同步会在什么时候发生?我可以考虑的第一种情况是本地ContentProvided/数据库内容更改。
那么如果是服务器端发生更改呢?SyncAdapter如何知道?
ContentResolver.requestSync(Account account, String authority, Bundle extras)
时,同步将会发生并使用您的帐户和授权。
此外,如果您的 ContentProvider insert 或 update 或 delete 函数调用了 ContentResolver.notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork)
,如果 bool syncToNetwork 是 true(默认值),它也会触发一次同步。 这里会引入短暂的延迟,以确保数据库更改的批量只会导致一个同步,而不是一个更改一个同步。请注意,您的代码应该调用 notifyChange
,因为这是 Android 在内容已更改后向 UI 发出更新信号的方式。
如果服务器数据库发生更改,则您的应用程序将不知道,因为未发生同步。 有两个选项: