Вы должны использовать ViewModel из компонентов архитектуры.
https://developer.android.com/topic/libraries/architecture/.
По сути, вы создаете модель представления в операции, чтобы она сохранялась с областью действия
//this is the instance of the activity
ViewModelProviders.of(this)
Затем вы можете получить экземпляр этой модели представления в каждом фрагменте, используя
ViewModelProviders.of(getActivity())
Модель представления затем может использоваться как в стандартной архитектуре MVVM.
Каждый фрагмент должен регистрироваться в компонентах, поддерживающих жизненный цикл, которые предоставит ViewModel. MutableLiveData - это один из таких компонентов, который вы можете использовать для предоставления данных тому, кто интересуется данными (в данном случае каждый фрагмент)
Имейте в виду, что LiveData, хотя и выполняет фантастическую работу, может быть ограничена, поскольку она хранит данные как состояние во времени. Это здорово, но андроид должен развиваться там, где им движут события)
В качестве примера. Если у вас есть модель представления, которая отправляет данные в представление через liveata, это может вызвать диалог. Когда пользователь закрывает это диалоговое окно и вызывает изменение конфигурации (уничтожает и воссоздает действие), представление получит состояние активных данных в тот момент, когда они были установлены, и снова отобразит диалоговое окно. По сути, каждый раз, когда вы поворачиваете устройство, оно может отображать диалоговое окно, даже если вы его отклонили.
Хакерское решение этой проблемы - уведомить модель представления об удалении состояния в liveata после закрытия диалогового окна. но это создает ряд других проблем, в том числе связывание состояния вида с моделью представления
Это гораздо более гибко, если компонент, поддерживающий жизненный цикл, вместо этого отправляет события, когда данные изменяются. Подумайте, Rxjava, который осведомлен о жизненном цикле. Вы добавляете данные в компонент RXJava, и наблюдаемая предоставляет данные наблюдателю, когда представление находится в состоянии его использования (> onresume и
Надеюсь, это даст вам отправную точку. Дайте мне знать, если вам нужно больше деталей