Приложение для резервного копирования и синхронизации контактов - PullRequest
5 голосов
/ 31 марта 2011

Я работаю над резервным копированием и синхронизацией контактов.

Цель - отправить все данные обо всех контактах на сервер (определенный пользовательский протокол) в качестве резервной копии.

При первом запуске приложения все контакты будут поставлены в очередь и отправлены на сервер.И после этого будет работать фоновая служба, которая будет прослушивать добавление / обновление нового контакта, и этот новый / обновленный контакт будет отправляться на сервер фоновой службой.

Я использую RawContactsEntity для получения записей.

Я пытался использовать ContentObserver в таблицах RawContacts / Data для получения уведомления о добавлении или изменении контакта.Но, AFAIK, ContentObserver выдает уведомление (onChange()) об измененных данных в таблице в целом, а не ID отдельной записи.

Теперь моя проблема в том, как получить точные идентификаторы измененных / новых записей?

Я думал о создании резервной таблицы для сравнения с собственной таблицей контактов и получения измененных записей.Но по мере увеличения числа контактов производительность резко снижается, что также сокращает срок службы батареи.

Можете ли вы мне предложить, Наилучший способ выполнения операции резервного копирования контактов с точки зрения производительности и использования памяти?Есть ли какой-нибудь другой способ для синхронизации контактов?

Было бы очень полезно, если бы кто-нибудь мог поделиться примерами, которые могут помочь мне в этом.

1 Ответ

0 голосов
/ 01 сентября 2014

Если контакты хранятся в вашей учетной записи ( AccountManger ), Android отметит грязный флаг в необработанных контактах.Если это не ваша учетная запись, то вы не можете доверять грязному флагу, поскольку адаптер синхронизации учетных записей мог обновить контакт с сервером и сбросить грязный флаг.Единственный вариант - повторно загрузить полные контакты (просто и легко кодировать) или отследить столбец версии в RawContacts и проверить, какой из них изменился.На самом деле не рекомендуется копировать и загружать контакты из других учетных записей, так как соответствующий адаптер синхронизации в любом случае будет поддерживать их резервные копии.Как у Google будет копия контактов Google на их сервере.

...