我想在我的应用程序中使用同步适配器来同步本机和第三方联系人(FB除外)与服务器。 (只有客户端到服务器单向同步)
我有两个疑问 -
1)如果设备中有多个同步适配器,并且如果脏位已被另一个同步适配器清除,我的同步适配器是否能够立即检测到联系人更改/更新。
2)我用过
ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);
将联系人与服务器同步。
它确实每隔30秒开始同步。
但是我想让它在添加或删除或更新联系人时立即得到通知以启动perfromSync操作。
我是否也需要使用观察者?
答案 0 :(得分:3)
要查看联系人的更改,您必须使用ContentResolver注册观察者。同步API并非用于监视每个更改,它旨在成为Android为您自动定期运行的后台API,以便它可以批量操作并更有效地使用网络,而不是在禁用网络时运行等。 ..
脏位用于每个帐户。通常,同步被设计为每个联系人具有“拥有”帐户,并且不是设计用于将所有联系人从设备导出到特定服务。有一个聚合过程可以处理来自多个帐户的联系人加入一个“联系人”,如用户所见。参见:
http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
有关其工作原理的更多信息。
如果您打算将设备上的所有联系人导出到您的服务,则需要查看联系人并为您的服务插入原始联系人。然后,您还需要与观察者一起观看ContentResolver,以查看用户何时在某些服务上添加新联系人,或定期查看该表以查找尚未导出的联系人。
答案 1 :(得分:2)
使用版本位。如果有任何联系编辑 它会自动增加1。
因此您可以创建本地数据库,以便将之前的版本与当前的版本进行比较。如果发生任何更改,您将触发更新查询。
有关详细信息,请访问here。
此版本有助于我的同步更新。所以我为所有人分享了这个答案。