Когда выполнять работу по подготовке фрагмента в ViewPage2 - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь перенести мое приложение из устаревшего ViewPager в ViewPage2. И я обнаружил, что в отличие от ViewPager, ViewPager2 не будет вызывать onCreate () или onCreateView для фрагмента, когда фрагмент не виден.

Например, пользователь находится на Fragment [N], когда используется ViewPager, Fragment [N + 1 ] будет создан в фоновом режиме, и я могу выполнить некоторые подготовительные работы (например, начать выборку данных, декодирование изображения и т. д. c.).

Однако, когда я попробовал пример ViewPager2, я обнаружил, что эти обратные вызовы жизненного цикла фрагмента вызываются только тогда, когда Fragment [N + 1] становится видимым для пользователя. В противном случае в фоновом режиме вызывается только конструктор фрагмента (метод init). Но мне нужны инициализированные виды объектов для подготовительной работы. Итак, как решить эту проблему? Или, если я делаю что-то неправильно, укажите правильное направление.

Большое спасибо.

1 Ответ

1 голос
/ 23 марта 2020

Вы можете решить некоторые из ваших проблем, настроив OffscreenPageLimit

https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2#setOffscreenPageLimit (int)

Это изменит его, приведя фрагменты + / - Число X в Started указывает на любую сторону от текущей.

Только текущий отображаемый фрагмент переводится в Resumed состояние.

Поскольку Viewpager2 - это просто просмотрщик фрагментов. оптимизирован для того, чтобы попытаться быть эффективным и не создавать фрагменты, пока они действительно не должны отображаться.

...