Теперь, когда я думаю об этом, ViewModels - это просто «сохраненные фрагменты», переименованные в «ViewModel» (это слишком просто, но вы понимаете, что я имею в виду), так что, как вы можете назвать, Frag.remove, чтобы удалить сохраненный фрагмент, то же самое следует быть принятым, очистив модель представления. По сути, «Retained Fragnent.remove ()» - это просто «viewmodelstore.clear ()». Кто-нибудь тоже так думает?

ылкой наandroid.arch.lifecycle.ViewModel класс.

ViewModel ограничено жизненным циклом компонента пользовательского интерфейса, к которому он относится, поэтому вFragmentприложение, которое будет частью жизненного цикла фрагмента. Это хорошая вещь.

В некоторых случаях каждый хочет поделитьсяViewModel экземпляр между несколькими фрагментами. Конкретно меня интересует случай, когдамногие экраны относятся к одним и тем же базовым данным.

(Документы предлагают аналогичный подход, когда несколько связанных фрагментов отображаются на одном экране, ноэто можно обойти, используя один фрагмент узла согласно ответу ниже.)

Это обсуждается вофициальная документация ViewModel:

ViewModels также можно использовать в качестве уровня связи между различными фрагментами действия. Каждый фрагмент может получить ViewModel, используя тот же ключ через свою активность. Это позволяет осуществлять связь между фрагментами в разобщенном виде, так что им никогда не нужно напрямую общаться с другим фрагментом.

Другими словами, для обмена информацией между фрагментами, которые представляют разные экраны,ViewModel должны быть ограничены доActivity жизненный цикл (и в соответствии с документацией Android это также может быть использовано в других общих экземплярах).

Теперь в новом шаблоне навигации Jetpack рекомендуется использовать архитектуру «Один вид деятельности / Много фрагментов». Это означает, что действие длится все время использования приложения.

то есть любой поделилсяViewModel случаи, которые ограниченыActivity жизненный цикл никогда не будет очищен - память остается в постоянном использовании.

В целях сохранения памяти и использования всего лишь необходимого количества ресурсов в любой момент времени было бы неплохо иметь возможность очищать общиеViewModel случаи, когда больше не требуется.

Как можно вручную очиститьViewModel из этогоViewModelStore или держатель фрагмента?

Ответы на вопрос(4)

Ваш ответ на вопрос