Навигация AAC может использовать собственный путь с Bundle
для передачи аргументов от FragmentA
до FragmentB
.Но он не поддерживает передачу результатов от FragmentB
до FragmentA
.
Также в Обзор ViewModel SharedViewModel
используется для передачи аргументов из одного фрагмента в другой.ViewModel
привязан к жизненному циклу деятельности.Таким образом, в ситуации, когда FragmentA
открывает FragmentB
, FragmentB
создает SharedViewModel
для передачи данных в FragmentC
и открывает их, и после этого пользователь возвращается к FragmentA
SharedViewModel
, который все еще жив, даже еслиэто больше не используется.Как я знаю, нет способа заставить сбросить ViewModel
.
Приемлемое решение, которое я вижу, это использование единого SharedViewModel
для всех фрагментов в деятельности, который управляет arguments
и results
, предотвращает утечку изнутри объектов.
Есть ли другиеспособ передать результаты обратно, кроме использования SharedViewModel
?
Подводя итог, есть еще один вопрос.Действительно ли навигация AAC настолько хороша, что я должен использовать ее и разработать обходной путь для такой вещи?Может быть, в нем есть и другие проблемы.