У меня ViewPager подключен к FragmentPagerAdapter, который отображает три фрагмента. Похоже, что ViewPager уничтожает вид размещенного фрагмента, когда он находится на расстоянии более одного удара от текущей позиции.
Все эти представления являются простыми списками, и эта оптимизация совершенно не нужна, поэтому я бы хотел ее отключить. Это вызывает некоторые визуальные проблемы, потому что к спискам применены анимации макета, и эти анимации воспроизводятся после того, как они были уничтожены и воссозданы. Он также показывает анимацию вступления полосы прокрутки каждый раз (когда полоса прокрутки кратко видна, чтобы указать, что прокрутка возможна), что может отвлекать, и текущая позиция прокрутки пользователя теряется в процессе.
Он также не загружает третий фрагмент до тех пор, пока не произойдет первый удар, что проблематично, поскольку каждый фрагмент обрабатывает свои собственные вызовы службы, и я предпочел бы, чтобы все три запускались одновременно, когда загружается действие. Задержка третьего сервисного вызова - это не идеал.
Есть ли способ убедить ViewPager прекратить это поведение и просто сохранить все мои фрагменты в памяти?
По умолчанию ViewPager воссоздает фрагменты при перелистывании страницы. Чтобы предотвратить это, вы можете попробовать одну из двух вещей:
1. В onCreate () ваших фрагментов вызовите setRetainInstance (true).
2. Если количество фрагментов фиксировано и относительно мало, то в onCreate () добавьте следующий код:
Если я правильно помню, второй вариант более перспективный. Но я призываю вас попробовать оба и посмотреть, какие из них работают.
источник
«Установите количество страниц, которые должны быть сохранены по обе стороны от текущей страницы в иерархии представлений в состоянии ожидания. Страницы за пределами этого предела будут воссозданы из адаптера при необходимости».
http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)
источник