Создаем обертку для стейт-машины, в которую есть возможность передать событие. ПРодумываем сохранение и восстановление состояния
Используем Singleton или Dependecy Injection для получения ссылки на нашу обертку
Прописываем состояния и события стейт-машины
Создаем интерфейс для подписки на стейт-машину, в котором есть метод возвращающий фрагмент или интент
Каждый фрагмент или активити наследуются от базового, который имплементирует интерфейс подписчика. В обработчики стартуем пришедший интент или фрагмент
В самой активити и фраменте отправляем стейт-машине события