Шаблон оформления Google IO Rest, закончил ContentProvider и застрял на получении данных из сети - PullRequest
30 голосов
/ 02 февраля 2012

После просмотра очень известного видео по этой теме я решил пойти с шаблоном дизайна B. Использование контент-провайдера с servicehelper.

google design pattern on rest

В основном у меня есть следующие файлы:

  • MyProvider
  • MyDatabase
  • Mycontract

В упражнении теперь можно получить контент-резольвер и запросить поставщика.Пока все работает отлично.

Теперь мне нужно синхронизировать контент-провайдер для получения данных из моего REST API.Таким образом мне нужно реализовать сервис вспомогательный сервис и метод Rest.Изучение приложения Google IO мне очень помогло, я новичок в Android, так что все еще трудно понять это.

Я вижу, что Google использует RemoteHandlers для обработки внешних данных, я думаю, они являются классами Processor на диаграмме?

Что я не понимаю, так это как я могу реализовать сервисную часть servicehelper +чтобы получить данные из сети.

  • Куда мне обратиться помощнику службы?
  • Что именно должны делать служба и помощник?
  • Есть ли хорошие примеры этого точного шаблона проектирования?

Я прочитал несколько тем в стеке об этом, предлагая разные методы.Я нашел пример, который объявляет restprovider, а затем myProvider должен расширить этот поставщик.Мне не нравятся эти решения, и я хочу следовать этой структурированной схеме проектирования.

1 Ответ

20 голосов
/ 08 февраля 2012

В моем понимании шаблон выглядит так:

  • Не показывать пустое действие и загружать содержимое в фоновом режиме.Если загрузка не удалась, вы не можете ничего отобразить.
  • Вместо этого отобразите данные, хранящиеся в БД, доступные через поставщика контента и адаптера - это гарантирует, что пользователь всегда увидит контент
  • В фоновом режименовые данные, как только данные на телефоне, активность автоматически обновляется через адаптер

На ваши вопросы (я изменил порядок):

Куда мне позвонить?на сервисном помощнике?
Я выбираю шаблон A из Vigils talk.В этом случае звонок зависит от вашей заявки.Вы можете запустить обновление при запуске приложения, при создании действия или когда пользователь выбирает кнопку обновления.Я бы выбрал при создании действия.

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

Есть ли хорошие примеры этого точного шаблона проектирования?
Из моего сообщения на https://stackoverflow.com/a/8693919/734687: единственная из известных мне ссылок на реализацию с открытым исходным кодом доступна в http://datadroid.foxykeep.com. Это библиотека, которую вы можете использовать в своем собственном приложении.Архитектура описана в разделе / ​​presentation - убедитесь, что вы ее прочитали.

Что конкретно должен делать сервисный помощник?
Если вы посмотрите на слайды на слайде 19 это одиночный пакет, который инкапсулирует вызов к услуге и обрабатывает асинхронные вызовы с помощью идентификаторов запросов.

что именно должен делать сервис?
Сервис(слайд 17 в презентации) просто гарантирует, что действие выполняется в фоновом режиме.

...