Как подать сигнал о завершении синхронизации в Android SyncManager?

#android #android-syncadapter

#Android #android-syncadapter

Вопрос:

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

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

Другая вещь, которую я собираюсь сделать, — это поток прослушивателя в службе, который прослушивает изменения в ContactsContract.ПОЛНОМОЧИЯ, чтобы он мог запустить синхронизацию моей агрегации.

ОБНОВЛЕНИЕ: этот поток прослушивателя протекает. Я выдаю .stop (), когда я закончу с этим, однако, есть обработчик, который, я думаю, остается в силе и предотвращает остановку службы.

Я хотел бы отправить SyncResults какому-либо объекту (т. Е. SyncManager), который отслеживает такие вещи на предмет ожидания, переработки и т.д.

Чего мне не хватает?

Ответ №1:

Чтобы уточнить ответ shunty на примере:

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

Комментарии:

1. ХОРОШО — моя путаница (беспокойство) заключается в том, что установка SyncResult, то есть параметра «input», является программированием побочных эффектов. Я надеялся, что по завершении моей onPerformSync я смогу отправить результат синхронизации в SyncManager или CP и т.д. чтобы это было записано.

2. Я согласен, это дерьмовая вещь, но именно так она была разработана для использования здесь.

Ответ №2:

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

Комментарии:

1. Хорошо, документ расплывчатый, и просмотр исходного кода Google был не очень поучительным. Я искал пример кода для использования этого класса с SyncAdapter, но безуспешно. Можете ли вы показать какой-нибудь пример кода? Я могу создать экземпляр и изменить, но я не знаю, как связать с учетной записью и отправить в SyncManager? Имеет ли это смысл?

2. Я попытался установить SyncResult в своем приложении, но я не вижу эффекта.