Как setOffscreenPageLimit () улучшает производительность ViewPager, сохраняя больше фрагментов за экраном?
у меня есть ViewPager
контрольный пять Fragments
. Когда я красть из Fragment
при индексе от 1 до Fragment
в, индексируют 0, в анимации короткая пауза это я хотел бы исключить.
в настоящее время я не звоню setOffscreenPageLimit()
, так что я знаю, что Fragment
0 удерживается в памяти ViewPager
, а я Fragment
1 в состоянии простоя, потому что ограничение страницы off screen по умолчанию равно 1 (по обе стороны от текущего Fragment
).
здесь это сбивает с толку. Если я позову setOffscreenPageLimit(4)
на ViewPager
, пауза в салфетки от 1 до 0 анимации исчезла - анимация гладкая.
поэтому я заключаю, что как-то, сохраняя Fragments
2-4 в памяти улучшает анимацию от Fragment
1 к Fragment
0.
как сохранив Fragments
2-4 улучшение прокрутки анимации из Fragment
1 к Fragment
0?
редактировать
я побежал TraceView, используя onPageScrollStateChanged(int state)
чтобы определить, когда начинать и останавливать трассировку, следующим образом:
@Override
public void onPageScrollStateChanged(int state) {
if (state == 1 && mViewPager.getCurrentItem() == 1) {
Debug.startMethodTracing("ViewPagerTesting", 100000000);
}
if (state == 0 && mViewPager.getCurrentItem() == 0) {
Debug.stopMethodTracing();
}
}
получается, что ViewPager
специальные возможности методы вызывают замораживание потока пользовательского интерфейса. Когда я позову setOffscreenPageLimit(4)
на ViewPager эти методы доступности находятся на пути вниз в трассировке - занимает незначительное время, чтобы закончить.
что вызывает задержку?
1 ответов
при использовании реализации по умолчанию setOffscreenPageLimit()
он загружает только один фрагмент, который находится справа от него. Для EG. когда вы находитесь на индексе 1, он имеет индекс 2, загруженный в память, но не индекс 0, поэтому, проводя влево, придется генерировать новый фрагмент с нуля. Чтобы проверить эту теорию, вы можете использовать setOffscreenPageLimit(2)
а затем попробуйте провести индекс 1 - >0. Это никоим образом не является оптимальным решением, но поможет прояснить ваши сомнения относительно концепции.