Как избежать onCreateView () при прокрутке в вкладках

У меня есть приложение с активностью и 3 swipable вкладки (фрагменты). У меня есть некоторые сильно созданные элементы пользовательского интерфейса внутри вкладок, которые требуют определенного времени для создания, и это нормально для первого запуска, но просмотры воссоздаются каждый раз, когда я их прокручиваю.

Когда я выбираю вкладку, другая вкладка вызывает onStop (), и когда я снова выбираю предыдущую вкладку, onCreateView () вызывается снова, а просмотр заселяется, что замедляется и блокирует поток пользовательского интерфейса.

Каков правильный способ создания фрагментов внутри вкладок ONCE и избежать воссоздания их вида при прокрутке между другими вкладками?

Чтобы добавить к сообщению CommnosWare, если вы используете пейджер представления, вы можете просто вызвать mViewPager.setOffscreenPageLimit(3); Чтобы сохранить все три в памяти. Но если ваш пользовательский интерфейс слишком тяжелый, вы можете заметить какой-то бит. Поэтому попробуйте изменить код настройки пользовательского интерфейса.

У меня есть некоторые сильно созданные элементы пользовательского интерфейса внутри вкладок, которые требуют определенного времени для создания

Если «какое-то время» превышает ~ 5 миллисекунд, ваше приложение нарушено и должно быть исправлено. Используйте Traceview, чтобы точно определить, где вы тратите свое время, а затем исправлять вопросы, чтобы на основной поток приложений занимало меньше времени.

Каков правильный способ создания фрагментов внутри вкладок ОДНАЖДЫ и избегать воссоздания их вида при прокрутке между другими вкладками?

AFAIK, FragmentPagerAdapter не должен иметь эффекта, который вы описываете (хотя FragmentStatePagerAdapter будет). Но, опять же, если вы исправите onCreateView() производительности onCreateView() , даже FragmentStatePagerAdapter не опубликует проблему.

Просто добавьте следующий код внутри основного класса Fragment / Activity, где объявлен TabAdapter.

 viewPager.setOffscreenPageLimit(tabLayout.getTabCount()); 

Закладка tabLayout и viewPager следующим образом

 TabLayout tabLayout = (TabLayout) root.findViewById(R.id.tab_layout); ViewPager viewPager = (ViewPager) root.findViewById(R.id.pager); 
Intereting Posts