SlidingTabLayout: зачем предварительно загружать следующую вкладку?

Я реализовал SlidingTabLayout в своем приложении, следуя https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/SlidingTabLayout.java и учебник все гугл. Все работает, но я не понимаю, почему, когда я делаю

  viewPager.setAdapter(viewPageAdapter);
  slidingTabLayout.setViewPager(viewPager);

автоматически называются:

  getItem(0);
  getItem(1);

Вместо

 getItem(0);

это вкладка по умолчанию. Это как предварительная загрузка следующей вкладки для оптимизации производительности? Как я могу избежать этого?

2 ответа

Решение

Это как предварительная загрузка следующей вкладки для оптимизации производительности?

Да.

Как я могу избежать этого?

Не использовать ViewPager, Идея позади ViewPager является то, что пользователь может проводить между страницами. Это требует загрузки страниц по обе стороны от текущей страницы, поэтому анимация между страницами может происходить плавно.

Не уверен, что это то, что вы ищете, но звучит так, как будто вы хотели бы ограничить количество просмотров, загружаемых с обеих сторон отображаемого вида.

Это может помочь:

//BEGIN_INCLUDE Fragment onViewCreated
public void onViewCreated(View view, Bundle savedInstanceState) {

    // BEGIN_INCLUDE (setup_viewpager)
    // Get the ViewPager and set it's PagerAdapter so that it can display items
    mViewPager = (ViewPager) view.findViewById(R.id.viewpager);


    //setOffscreenPageLimit() allows the viewpager to maintain state as it's swiped.  the chronometer will keep running as the page is swiped
    //This may need to be adjusted as the app gets more tabs ADDED 3-31-15
    mViewPager.setOffscreenPageLimit(8);//8 screens loaded and maintain state

}

Обратите внимание на setOffscreenPageLimit() метод. Попробуйте установить это в 0 или 1.

Из документации (в этом классе веб-сайт Android Developer не предлагает такого рода специфику)

/**
 * Set the number of pages that should be retained to either side of the
 * current page in the view hierarchy in an idle state. Pages beyond this
 * limit will be recreated from the adapter when needed.
 *
 * This is offered as an optimization. If you know in advance the number
 * of pages you will need to support or have lazy-loading mechanisms in place
 * on your pages, tweaking this setting can have benefits in perceived smoothness
 * of paging animations and interaction. If you have a small number of pages (3-4)
 * that you can keep active all at once, less time will be spent in layout for
 * newly created view subtrees as the user pages back and forth.
 *
 * You should keep this limit low, especially if your pages have complex layouts.
 * This setting defaults to 1.
 *
 * @param limit How many pages will be kept offscreen in an idle state.
 */

Вы можете экспериментировать, чтобы найти значение, которое вы хотите.

Другие вопросы по тегам