Связаться с адаптером синхронизации в android
Я хочу использовать адаптер синхронизации в своем приложении для синхронизации собственных и сторонних контактов (кроме FB) с сервером. (Только синхронизация с одним клиентом на сервер)
У меня здесь два сомнения -
1) Если в устройстве есть несколько адаптеров синхронизации. Если бит грязной бит уже очищен другим адаптером синхронизации, сможет ли мой адаптер синхронизации обнаруживать немедленное изменение/обновление контактов.
2) Я использовал
ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);
для синхронизации контактов с сервером.
Он запускает синхронизацию каждые 30 секунд.
Но я хочу, чтобы он получал уведомление немедленно, когда когда-либо были добавлены контакты или удалены или обновлены, чтобы запустить perfromSync.
Нужно ли использовать наблюдателя?
Ответы
Ответ 1
Чтобы увидеть изменения в контактах, вам необходимо зарегистрировать наблюдателя в ContentResolver. API синхронизации не предназначен для наблюдения за каждым изменением, он предназначен для фонового API, который Android запускается автоматически автоматически для вас, чтобы он мог выполнять пакетные операции и использовать сеть более эффективно, а не запускаться при отключении сети и т.д...
Грязный бит используется для каждой учетной записи. В общем случае синхронизация предназначена для наличия "собственной" учетной записи для каждого контакта и не предназначена для экспорта всех контактов с устройства на конкретную услугу. Существует процесс агрегации, который обрабатывает соединение контактов из нескольких учетных записей в один "Контакт", как видно пользователю. См:
http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
Подробнее о том, как это работает,
Если вы намерены экспортировать все контакты на устройство в свою службу, вам нужно будет прогуливать контакты и вставлять необработанные контакты для вашей службы. Затем вы также захотите посмотреть ContentResolver с наблюдателем, чтобы увидеть, когда пользователь добавляет новый контакт в какую-либо службу или периодически просматривает таблицу, которая ищет контакты, которые вы еще не экспортировали.
Ответ 2
используйте бит версии. Если какой-либо контакт редактируется
Он автоматически увеличивается на 1.
чтобы создать локальную базу данных для сравнения предыдущей версии с текущей версией . Если происходят какие-либо изменения, вы вызываете запрос на обновление.
для получения дополнительной информации посетите здесь.
Эта версия помогает для моих обновлений синхронизации. Поэтому я разделяю этот ответ для всех.