OverView
Edit:
Любой, кто заинтересован, также подумает о том, чтобы взглянуть на RESTful android , это может дать вам лучший взгляд на это.
Из опыта, накопленного при попытке реализовать модель Добжански, я узнал, что не все написано на камне, и он лишь дает вам обзор того, что для этого может меняться от приложения к приложению, но формула:
Следуйте этим идеям + Добавьте свое собственное = Счастливое приложение для Android
Модель в некоторых приложениях может отличаться от требований, которым некоторые могут не требовать Учетную запись для SyncAdapter, другие могут использовать C2DM, эта, которую я недавно работал, может кому-то помочь:
Создание приложения с учетной записью и AccountManager
Это позволит вам использовать SyncAdapter для синхронизации ваших данных. Это обсуждалось на Создайте свой собственный SyncAdapter
Создайте ContentProvider (если это соответствует вашим потребностям)
Эта абстракция позволяет вам не только обращаться к базе данных, но и обращаться к ServiceHelper для выполнения вызовов REST, поскольку у него есть метод отображения один на один с REST Arch.
Поставщик контента | Метод ОТДЫХА
query ----------------> GET
вставить ----------------> PUT
обновление ----------------> POST
удалить ----------------> УДАЛИТЬ
ServiceHelper Layering
Этот парень обычно запускает (а) сервис (ы), которые выполняют HESTP (не обязательно протокол, но это наиболее распространенный) метод REST с параметрами, которые вы передали из ContentProvider. Я передал целочисленное совпадение, полученное из UriMatcher на провайдере контента, поэтому я знаю, к какому ресурсу REST получить доступ, т.е.
class ServiceHelper{
public static void execute(Context context,int match,String parameters){
//find the service resource (/path/to/remote/service with the match
//start service with parameters
}
}
Служба
Выполняется (я использую IntentService большую часть времени) и переходит к RESTMethod с параметрами, передаваемыми от помощника, для чего он хорош? хорошо помните, что служба хороша для запуска в фоновом режиме.
Также реализуйте BroadCastReceiver, чтобы, когда сервис завершил свою работу, уведомил мою активность, которая зарегистрировала эту трансляцию, и снова запросил. Я считаю, что этот последний шаг не на Virgill Conference, но я уверен, что это хороший путь.
RESTМетод класса
Принимает параметры, ресурс WS (http://myservice.com/service/path) добавляет параметры, все готовит, выполняет вызов и сохраняет ответ.
Если требуется авторизация, вы можете запросить ее в AccountManager.
Если вызов службы не удался из-за аутентификации, вы можете сделать недействительным авторизационный токен и повторно получить новый токен.
Наконец, RESTMethod дает мне либо XML, либо JSON, независимо от того, создаю ли я процессор на основе сопоставителя и передаю ответ.
Процессор
Он отвечает за анализ ответа и вставку его локально.
Пример приложения? Конечно!
Также, если вас интересует тестовое приложение, которое вы смотрите на Eli-G , это может быть не лучший пример, но оно следует подходу Service REST, оно построено с ServiceHelper, Processor, ContentProvider, Загрузчик и Трансляция.