Как разделить Android Activity или фрагменты и состояние приложения?
Я использую для этого стейт-машину:Создаем обертку для стейт-машины, в которую есть возможность передать событие. ПРодумываем сохранение и восстановление состоянияИспользуем Singleton или Dependecy Injection для получения ссылки на нашу оберткуПрописываем состояния и события стейт-машиныСоздаем интерфейс для подписки на стейт-машину, в котором есть метод возвращающий фрагмент или интентКаждый фрагмент или активити наследуются от базового, который имплементирует интерфейс подписчика. В обработчики стартуем пришедший интент или фрагментВ самой активити и фраменте отправляем стейт-машине события
Если надо иметь доступ к данным, и при этом быть независимым от жизненных циклов, можно попробовать дефолтное решение от Google:  Android Architecture Components. Довольно просто использовать. Презентация с русскими субтитрами: https://youtu.be/Dl4DiQRxBi4