假设我的应用程序实现了SyncAdapter功能,并没有定义定期同步。在这种情况下会发生同步吗?我可能会想到的第一个场景是本地ContentProvided /数据库内容更改。 什么是服务器更改? SyncAdapter将如何了解这一点?
答案 0 :(得分:32)
如果您没有定期同步设置,如果您的代码使用您的帐户和权限明确调用ContentResolver.requestSync(Account account, String authority, Bundle extras)
,则会发生同步。
此外,如果您的ContentProvider插入或更新或删除函数调用ContentResolver.notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork)
,如果bool syncToNetwork为true(默认值),它还将触发同步。这里引发了一个短暂的延迟,以确保一批数据库更改仅导致一次同步,而不是每次更改一次。请注意,您的代码应该调用notifyChange
,因为在UI反映的内容发生更改之后,Android就会通过Android来指示您的UI更新。
如果服务器数据库发生更改,您的应用将无法知道,因为未发生同步。两个选项: