5

我正在处理联系人备份和同步。

目标是将所有联系人的所有详细信息发送到服务器(定义的自定义协议)作为备份。

在应用程序的初始启动期间,所有联系人将排队并发送到服务器。之后,后台服务将一直运行,它会监听新的联系人添加/联系人更新,并且这个新/更新的联系人将由后台服务发送到服务器。

我正在使用RawContactsEntity来获取记录。

我尝试ContentObserver在 RawContacts/Data 表上使用来获取联系人添加或联系人更改的通知。但是,AFAIK,作为一个整体而不是单个记录的 ID 给出表中更改数据的ContentObserver通知( )。onChange()

现在我的问题是,如何获得更改/新记录的确切 ID?

我想创建一个备份表来与本机联系人表进行比较并获取更改的记录。但是随着触点数量的增加,性能会急剧下降,这也会影响电池寿命。

您能否建议我,从性能和内存使用的角度来看,实现此联系人备份操作的最佳方法?联系人同步操作还有其他方法吗?

如果有人可以分享可以帮助我的示例,那将非常有帮助。

4

1 回答 1

0

如果联系人存储在您的帐户(AccountManger)中,Android 将在原始联系人中标记脏标志。如果不是您的帐户,则您不能信任脏标志,因为帐户同步适配器可能已将联系人更新到服务器并重置脏标志。您唯一的选择是重新上传完整的联系人(简单且易于编码)或跟踪 RawContacts 中的版本列并检查哪个已更改。实际上不建议从其他帐户复制和上传联系人,因为相应的同步适配器无论如何都会保留这些联系人的备份。就像谷歌会在他们的服务器上拥有一份谷歌联系人的副本。

于 2014-09-01T05:15:16.343 回答