#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 в своем приложении, но я не вижу эффекта.