Лучшая реализация ViewPager - это утилизация элементов ViewPager. И вы можете достичь этого с помощью offScreenPageLimit.
Однако, отвечая на ваш вопрос, я сам столкнулся с подобной ситуацией, и пока нет идеального решения для достижения такого сценария. Но есть определенные хаки, которые вы можете сделать.
Одним из решений является использование
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
else {
}
}
Это будет выполняться только тогда, когда фрагмент виден пользователю.
Но у этой функции тоже есть свои подводные камни. В некоторых крайних случаях это также не выполняется, что приведет к пустому фрагменту.
Хак, который я делаю, - это использование «OnTabSelectedListener», если я интегрирую viewpager с tablayout, и если есть только Viewpager, вы можете переопределить «OnPageSelectedListener».
Если вы используете OnTabSelectedListener , вы получите обратные вызовы в методе "OnTabSelected ()", когда выбрана вкладка. Поэтому, когда вы получаете обратный вызов, используйте публичную функцию в соответствующем фрагменте для загрузки данных (вызовы API, настройка адаптера и т. Д.).
Надеюсь, это поможет