联系人备份和同步应用程序

问题描述:

我正在处理联系人备份和同步。联系人备份和同步应用程序

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

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

我使用RawContactsEntity来获取记录。

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

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

我想创建一个备份表来比较本地联系人表并获取更改的记录。但随着联系数量的增加,性能将急剧下降,这也会影响电池续航时间。

你可以建议我,从性能和内存使用的角度来实现这种联系人备份操作的最佳方式是什么? 有没有其他方式进行联系人同步操作?

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

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