Возникли проблемы с применением архитектуры кода Android / шаблонов проектирования - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу добиться следующего:

Я получаю уведомление через FCM с указанным id в свойствах данных.Я получаю id, когда мое приложение находится на переднем плане и на заднем плане / закрыто ... пока все хорошо.
Теперь я хочу сделать следующее:

  1. Сделать залппопросите, например, /books/id, чтобы получить соответствующую информацию о книге.
  2. Постоянно сохраняйте эту информацию в Room database
  3. Отображайте их в RecyclerView

Сценарий 1: Приложение с RecyclerView находится на переднем плане:
Как только я получу новый id через данные уведомления FCM, я хочуRecyclerView, чтобы добавить другой элемент списка с недавно извлеченными сведениями о книге.

Сценарий 2: Приложение в фоновом режиме - уведомление нажимается:
Когда щелкают по уведомлению, загружается MainActivity с RecyclerView, показывая информацию о недавно полученных книгах.

Сценарий 3: Приложение находится в фоновом режиме - уведомление удаляется:
Через некоторое время уведомление было проведенолюбой пользователь повторно открывает или перезапускает приложение.MainActivity с RecyclerView и информацией о недавно полученных книгах.

Моя проблема:
Я не совсем знаю, как структурировать свой код для достижения этой цели,Я попытался сделать запрос залпа внутри FCM onMessageReceived(), но это привело к ошибке, и я не знаю, где и как я мог бы сделать это иначе.Я проверил запрос залпа в другом проекте, и он работал там.В настоящее время я пытаюсь научиться работать с базой данных Room.

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

Заранее спасибо!:)


РЕДАКТИРОВАТЬ 1: Я больше не получаю ошибку внутри onMessageReceived.Я получаю правильный ответ с данной книгой id.
Теперь я хочу сохранить эту информацию в Room database и отразить изменение в моем RecyclerView.Я думаю, что собираюсь использовать андроиды architecture components как здесь:
пример компонентов архитектуры андроида

Я думаю, это именно то, что мне нужно.Тем не менее, я все еще не совсем понимаю, как с этим справляться и соответствующим образом структурировать свой код.

1 Ответ

0 голосов
/ 04 февраля 2019

Сценарий 1: Вы можете сохранить его в БД или просто сделать трансляцию и сохранить, например, в Activity, а затем отобразить список.

Сценарий 2: Вы должны сохранить все отображаемые данные в БД.После нажатия на уведомление, когда RecyclerView находится в фоновом режиме , вы должны обработать намерение, которое проходит через android.intent.category.LAUNCHER фильтра намерений, и поместить туда некоторую информацию, чтобы сделать запрос и обновить список.

Сценарий 3: Наконец, просто сделайте запрос, сохраните в БД, затем отобразите все в списке.Это хороший подход, он требует дополнительного времени, но вы всегда держите его в курсе.

Также читайте об эффективных данных горячей замены с помощью DiffUtils

...