2016-01-09 2 views
2

У меня есть адаптер синхронизации, который синхронизирует мои контакты с сервером и возвращает меньшее количество контактов, зарегистрированных в моем приложении. Я добавляю свою учетную запись приложения в эти контакты и добавляю их в контакт с телефонной книгой. я реализовал класс наблюдателя, который наблюдает, если есть какие-либо изменения в моей телефонной книге-контактов (например, добавление, редактирование или удаление), как показано нижеДобавление контакта с помощью адаптера синхронизации делает синхронизацию синхронизации синхронизацией в бесконечном цикле

protected void onCreate(final Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

    mAccount = CreateSyncAccount(this); 
    ContentResolver.setSyncAutomatically(mAccount, AUTHORITY, true); 

    mResolver = getContentResolver(); 
    mUri = new Uri.Builder() 
      .scheme(SCHEME) 
      .authority(AUTHORITY) 
      .path(TABLE_PATH) 
      .build(); 
    TableObserver observer = new TableObserver(); 
    mResolver.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, observer); 

Делая это, синхронизация адаптер входит в бесконечный цикл и сохраняет синхронизацию контактов с сервер.

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

метод OnChange MyObserver класса, как:

@Override 
    public void onChange(boolean selfChange, Uri changeUri) { 
     mResolver.requestSync(mAccount, AUTHORITY, new Bundle()); 
    } 

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

ответ

1

Нет необходимости регистрировать ContentObserver, чтобы инициировать синхронизацию самостоятельно. Если ваш адаптер синхронизации настроен должным образом, Android будет автоматически запускать синхронизацию при каждом создании, изменении или удалении контакта.

Просто убедитесь, что ваш адаптер синхронизации установил android:supportsUploading="true" в файле xc syncadapter.

Смежные вопросы