У меня есть приложение, которое извлекает данные в основном действии и отправляет событие всем фрагментам, как только оно становится доступным. Итак, для первого запуска это выглядит так:
Приложение запускается (фрагменты инициализируются в фоновом режиме) -> загрузка фида -> уведомление отправляется фрагментам -> фрагменты инициализируют пользовательский интерфейс
Пока все в порядке. НО, что, если я возобновлю работу приложения. Данные по-прежнему будут кэшироваться, поэтому я отправлю событие сразу при возобновлении работы приложения, и поэтому может случиться так, что мои фрагменты даже не готовы к приему события -> нет обновления пользовательского интерфейса фрагмента! Либо событие срабатывает и принимается во фрагменте, но фрагмент не готов к обновлению UI, потому что он еще не раздул макет -> NullpointerException Либо фрагмент получает событие, но больше не привязан к активности - > еще одно исключение. Есть способы решения отдельных проблем, но в целом это сильно усложняет архитектуру.
Каким-то образом я пробовал много вещей (играл с шиной Отто), но почему-то не могу найти какую-либо архитектуру, которая работает для того, чтобы сделать центральный источник данных доступным для всех действий и фрагментов в приложении.
Как вы снабжаете свои фрагменты данными, если не хотите использовать пакеты?