5

我正在處理聯繫人備份和同步。聯繫人備份和同步應用程序

目標是將所有聯繫人的所有詳細信息發送到服務器(定義的自定義協議)作爲備份。

在初次啓動應用程序期間,所有聯繫人將排隊併發送到服務器。 此後,後臺服務將一直在運行,這將監聽新的聯繫人添加/聯繫人更新,並且這個新的/更新的聯繫人將通過後臺服務發送到服務器。

我使用RawContactsEntity來獲取記錄。

我嘗試在RawContacts/Data表上使用ContentObserver來獲取聯繫人添加或聯繫人更改的通知。但是,AFAIK,ContentObserver通知(onChange())整個表中的變更數據,而不是單個記錄的ID。

現在我的問題是,如何獲取更改/新記錄的確切ID?

我想創建一個備份表來比較本地聯繫人表並獲取更改的記錄。但隨着聯繫數量的增加,性能將急劇下降,這也會影響電池續航時間。

你可以建議我,從性能和內存使用的角度來實現這種聯繫人備份操作的最佳方式是什麼? 有沒有其他方式進行聯繫人同步操作?

如果有人能分享可以幫助我的例子,那將會非常有幫助。

回答

0

如果聯繫人存儲在您的帳戶(AccountManger)中,Android會在原始聯繫人中標記髒標誌。如果它不是您的帳戶,那麼您不能相信髒標誌,因爲帳戶同步適配器可能已將聯繫人更新到服務器並重置髒標誌。您唯一的選擇是重新上傳完整的聯繫人(簡單易用的代碼)或跟蹤RawContacts中的版本列,並檢查哪一個已更改。實際上,不建議從其他帳戶複製和上傳聯繫人,因爲相應的同步適配器無論如何都會保留這些聯繫人的備份。就像谷歌將在他們的服務器上有一份谷歌聯繫人一樣。