Приложение для резервного копирования и синхронизации контактов

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

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

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

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

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

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

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

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

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


person Udayan    schedule 31.03.2011    source источник


Ответы (1)


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

person Ankur Kumar    schedule 01.09.2014