我正在进行联系人备份和同步。
目标是将所有联系人的所有详细信息发送到服务器(定义的自定义协议)作为备份。
在首次启动应用程序期间,所有联系人都将排队并发送到服务器。 之后,后台服务将一直运行,将收听新的联系人添加/联系人更新,这个新的/更新的联系人将由后台服务发送到服务器。
我正在使用RawContactsEntity来获取记录。
我尝试在RawContacts / Data表上使用ContentObserver
来获取联系人添加或联系人更改的通知。但是,AFAIK,ContentObserver
会在表格中提供已更改数据的通知(onChange()
),而不是单个记录的ID。
现在我的问题是,如何获取更改/新记录的确切ID?
我想创建一个备份表来与本机联系人表进行比较并获取更改的记录。但随着接触次数的增加,性能会急剧下降,这也会妨碍电池寿命。
您能否建议我,从性能和内存使用的角度来看,实现此联系人备份操作的最佳方式是什么? 联系人同步操作还有其他方法吗?
如果有人可以分享可以帮助我的例子,将会非常有帮助。
答案 0 :(得分:0)
如果联系人存储在您的帐户中(AccountManger),Android会在原始联系人中标记脏标记。如果它不是您的帐户,那么您不能信任脏标志,因为帐户同步适配器可能已将联系更新到服务器并重置脏标志。您唯一的选择是重新上传完整的联系人(简单易用的代码)或跟踪RawContacts中的版本列并检查哪一个已更改。实际上不建议从其他帐户复制和上传联系人,因为相应的同步适配器将始终维护这些联系人的备份。与谷歌一样,他们的服务器上会有一份谷歌联系人。