ViewModel for Fragment вместо доступа к Activity ViewModel?

Проблема довольно проста. Вопрос заключается в контексте использования ViewModels, LiveData и других связанных с Lifecycle дуговых подходов.
У меня есть Activity с NavDrawer, который включает фрагменты внутри.
А также я имею случай, когда два фрагмента присутствуют одновременно на экране – это будет основной болью. Один фрагмент имеет ViewPager с вложенными Fragments ( не спрашивайте, почему ). Другой фрагмент просто получает информацию от первого, когда пользователь выполняет некоторые действия. Это достигается только путем совместного использования режима просмотра активности. Но у приложения есть много бизнес-логики, и по мере того, как он идет дальше, viewmodel становится все больше и больше.
То, что я хочу спросить, – это не квитанция или правила, как это исправить, или, может быть, как ее преодолеть, фиксируя всю структуру проекта. Я хочу спросить о предложениях, как применить подход MVVM в стиле android.arch.lifecycle к моему случаю использования.
Я не видел что-то более сложное, а просто делил Activity ViewModel между фрагментами. Но общий, это не лекарство. введите описание изображения здесь

Что вы можете увидеть здесь – беспорядок на самом деле. Дело в том, что все разделяют ActivityViewModel . Соединения (агрегация) от FirstFragment означают, что ViewPager внутри FirstFragment инициирует ChildFragments и они также работают с одним и тем же ActivityViewModel (убейте меня). В результате каждый работает с одной общей ViewModel.
Мое предложение состоит в том, чтобы добавить ViewModel для каждого слоя. Так что Activity / Fragments / ChildFragments имеют свои собственные ViewModels. Но что здесь появляется – как мы должны тогда общаться ?
Возможные решения :

  • Наличие двух ViewModels на один компонент. Один ViewModel будет обрабатывать / делегировать бизнес-логику, а другой будет осуществлять связь. Две модели просмотра на один компонент – не так хорошо, да?
  • Имея интерфейс старой моды ( пожалуйста, нет! )
  • Другие обходные пути – например, DB / SharedPrefs / Realm change listeners и Event Buses ( я слишком стар для этого 🙁 ).

  • Ваше решение здесь!

Я скажу, что все вышеперечисленное нарушает множество принципов дизайна, так что мне делать? Как я должен выйти из этого беспорядка? Есть ли Uncle Bob или другой superhero чтобы помочь?

PS – Ну, создание UML или других графиков не является моей сильной стороной. Простите за это.
PPS – я знаю образцы Google .

Solutions Collecting From Web of "ViewModel for Fragment вместо доступа к Activity ViewModel?"