Android MVP лучший способ обработки представлений с помощью вызова API - PullRequest
0 голосов
/ 03 февраля 2019

У меня вопрос относительно того, как обновить свое представление или выполнить переход фрагмента, когда представление переходит в фоновый режим, а ответ API поступает в виде обратного вызова.

Например, у меня есть loginfragment.Пользователь нажимает кнопку входа в систему, и докладчик берет ее и передает ей Interactor, где у меня есть мой наблюдатель Rx, который общается с хранилищем и моделью и так далее.Ответ возвращается через 3-5 секунд.В течение этого времени я нажимаю кнопку «Домой», и мое приложение переходит в фоновый режим.Докладчик получает ответ от обратного вызова Interactor и теперь хочет обновить представление, но представление находится в фоновом режиме.

При успешном входе в систему я хочу выполнить переход фрагмента и перейти к фрагменту B. Но мое представление в фоновом режиме.Поэтому, когда я возвращаю свое приложение на передний план, я все еще вижу экран входа в систему, хотя я уже получил ответ API успешного входа в систему.

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

1 Ответ

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

Одним из подходов является архитектура Model-View-Intent в Mosby , в которой докладчик сохраняет последнее состояние представления, а представление подписывается на ViewState Observable для обновления.При таком подходе представление может подписываться в onStart(), когда безопасно выполнять фрагментированные транзакции.

Другой возможный подход состоит в том, что у каждого представления есть состояние (ViewState), которое содержит очередь команд для представления.,Если представление готово (onStart() уже было вызвано), то команда передается ему немедленно, в противном случае оно сохраняется в очереди и откладывается до тех пор, пока представление не будет готово.Посмотрите, как это реализовано в Мокси .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...