Я уже некоторое время испытываю компонент навигации, но почему-то не понимаю причины (или объяснения) текущего жизненного цикла компонента навигации.Вот некоторые моменты, требующие уточнения.
1.Поток от фрагмента к фрагменту
В компоненте навигации каждый фрагмент (или, скажем, страница) воссоздается при каждом посещении (или повторном посещении).Таким образом, когда вы находитесь на A
и переходите к B
, A
уничтожается, а позже, когда вы возвращаетесь к A
(как нажатие кнопки назад), * 1009 * создается с натяжением.
В традиционных шаблонах действий, когда вы возвращаетесь к A
, он просто переходит к onResume
, поскольку не был уничтожен при переходе к B
.Любая причина, по которой этот шаблон изменяется в компоненте навигации?
Проблема воссоздания заключается в том, что когда у вас много данных, и для перерисовки требуется время, и кажется, что приложение зависает.Примером может служить простая HomePage (скажем, Facebook NewsFeed).Сохранение данных может быть обработано с помощью ViewModel
, но для отрисовки всех каналов снова требуется время, и оно замерзнет.
Существует еще одна проблема, порождаемая отдыхом.Предположим, этот сценарий: A
имеет Collapsing AppBar
с NestedScrollView
.Пользователь прокручивает страницу вниз и AppBar
сворачивается, а затем пользователь переходит на другую страницу B
.Когда он вернется к A
, он будет перерисован, а AppBar
расширен.Я не уверен, что это ошибка или я должен что-то сделать, чтобы это исправить?Так что любое решение здесь также приветствуется.
2.Активный отдых
Если активность воссоздается по определенным причинам, таким как изменение ориентации, каждая страница в компоненте навигации воссоздается до текущего пункта назначения.Хотя вызывается onCreate
метод Fragment, а не onCreateView
, я не вижу смысла создавать фрагменты в воссоздании Activity.Любое объяснение будет приветствоваться.