@mstr
TeamLead & Java developer

Как разделить Android Activity или фрагменты и состояние приложения?

В наших android проектах практикуется переход между фрагментами или activity через intent при котором одно activity вызывает другой или один фрагмент инициирует запуск другого фрагмента. В итоге каждый фрагмент должен знать о следующем фрагменте и о данных которые он должен передать.

Я хочу переделать такую архитектуру чтобы был только объект который хранит текущее состояние пользователя, например на какой форме он находится, его данные, чтобы объект сохранял свое состояние при onPause и чтобы фрагменты или activity всегда могли построится из этого объекта даже если приложение свернуто или закрыто. И чтобы фрагменты или activity ничего не знали о других формах.

Существуют ли примеры такой архитектуры?
Или фраймворки которые уже следуют такой методологии?
Или как вы строите такую архитектуру?
  • Вопрос задан
  • 1449 просмотров
Решения вопроса 2
VYakushev
@VYakushev
Разработчик Android в Nowtaxi
Я использую для этого стейт-машину:
  1. Создаем обертку для стейт-машины, в которую есть возможность передать событие. ПРодумываем сохранение и восстановление состояния
  2. Используем Singleton или Dependecy Injection для получения ссылки на нашу обертку
  3. Прописываем состояния и события стейт-машины
  4. Создаем интерфейс для подписки на стейт-машину, в котором есть метод возвращающий фрагмент или интент
  5. Каждый фрагмент или активити наследуются от базового, который имплементирует интерфейс подписчика. В обработчики стартуем пришедший интент или фрагмент
  6. В самой активити и фраменте отправляем стейт-машине события
Ответ написан
@Deadkenny
Библиотека Mosby поможет вам разделить логику и отображение в приложении. А хранить состояние отображения можно во ViewState.
hannesdorfmann.com/mosby
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ziginsider
@ziginsider
C#, Xamarin, Android, python
Если надо иметь доступ к данным, и при этом быть независимым от жизненных циклов, можно попробовать дефолтное решение от Google: Android Architecture Components. Довольно просто использовать. Презентация с русскими субтитрами: https://youtu.be/Dl4DiQRxBi4
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы