Подтвердить что ты не робот

Google IO Rest design pattern, Готовый ContentProvider и застрял сейчас

Итак, после просмотра очень известного видео на эту тему я решил пойти с шаблоном дизайна B. Используя contentprovider с сервисом поддержки.

google design pattern on rest

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

  • MyProvider
  • MyDatabase
  • Mycontract

в действии я могу теперь получить contentresolver и запросить поставщика. Все отлично работает до сих пор.

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

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

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

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

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

Изменить: доступен источник проекта: https://github.com/samvdb/TracknTrace

4b9b3361

Ответ 1

В моем понимании шаблон выглядит следующим образом:

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

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

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

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

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

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

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