Как обработать RESTful-обновление удаленного сервера с помощью SyncAdapter
Я смотрел выступление Google I / O REST и читал слайды:http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html
Мне все еще немного неясно, как правильно обрабатывать, скажем, ошибку обновления, выданную удаленным сервером. Я реализовал свой собственный ContentProvider и SyncAdapter. Рассмотрим этот сценарий:
Обновите контактную информацию пользователя через вызов REST:
Запросите обновление с помощью ContentResolver.Мой ContentProviderнемедленно обновляет локальную базу данных приложения Sqlite и запрашивает синхронизацию (в соответствии с рекомендациями в докладе Google I / O).Мой SyncAdapter.onPerformSync () вызывается и выполняет вызов REST для обновления удаленных данных.Удаленный сервер отвечает «ОШИБКА: Неверный номер телефона» (например).Мой вопрос заключается в том, каков наилучший способ для SyncAdapter сообщить моему ContentProvider, что это изменение необходимо сохранить из локальной базы данных приложения, а также сообщить моей активности, что запрос на обновление не выполнен (и передать возвращенные сообщения об ошибках). с сервера)?
Моя активность должна отображать счетчик хода выполнения в ожидании результата и знать, был ли запрос успешным или нет.
Для обновления базы данных локального приложения содержимым с сервера шаблон SyncAdapter имеет для меня полный смысл, и у меня это работает нормально. Но для обновленийиз приложениев сервер, я не могу найти хороший способ справиться с вышеописанным сценарием.
И еще одна вещь ...;)
Скажем, я вызываю ContentResolver.notifyChange (uri, null, true); изнутри метода update () моего ContentProvider.true
вместе сandroid:supportsUploading="true"
вызовет onPerformSync () моего SyncAdapter. Отлично, но внутри onPerformSync (), как мне узнать, какой URI мне следует синхронизировать? Я не хочу просто обновлять всю мою БД каждый раз, когда я получаю запрос синхронизации. Но вы даже не можете передать Bundle в notifyChangeCall () для передачи в onPerformSync ().
Все примеры, которые я видел в onPerformSync (), были настолько просты, и без использования собственного ContentProvider, есть какие-нибудь реальные примеры? И документы немного птичьего гнезда. Вирджил Добжански, сэр, вы оставили меня в ручье без весла.