我想在我的应用程序中使用同步适配器将 native 和第三方联系人(FB 除外)与服务器同步。 (只有客户端到服务器的一种同步方式)
这里我有两个疑惑——
1) 如果设备中有多个同步适配器并且脏位已经被另一个同步适配器清除,我的同步适配器是否能够立即检测到联系人更改/更新。
2)我用过
ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);
与服务器同步联系人。
它确实每 30 秒开始同步。
但我希望它在添加或删除或更新联系人时立即收到通知以启动 perfromSync 操作。
我也需要使用观察者吗?
最佳答案
为了查看联系人的更改,您必须向 ContentResolver 注册一个观察者。 sync API 并非旨在监视每一个变化,它旨在成为 Android 定期自动为您运行的后台 API,以便它可以批处理操作并更有效地使用网络,而不是在网络禁用时运行等。 ..
脏位是基于每个帐户使用的。通常,同步设计为每个联系人都有一个“拥有”帐户,而不是为将所有联系人从设备导出到特定服务而设计。有一个聚合过程可以处理将来自多个帐户的联系人加入到用户看到的一个“联系人”中。见:
http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
有关其工作原理的更多信息。
如果您打算将设备上的所有联系人导出到您的服务中,您将需要遍历联系人并为您的服务插入一个原始联系人。然后,您还需要与观察者一起观察 ContentResolver,以了解用户何时在某些服务上添加了新联系人,或者定期遍历表格以查找您尚未导出的联系人。
关于android - android中的联系人同步适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183776/