Cómo evitar onCreateView () al deslizar en las pestañas
Tengo una aplicación con una actividad y 3 lengüetas deslizable (fragmentos). Tengo algunos elementos de la interfaz de usuario muy creados dentro de las pestañas que tardan algún tiempo en crearse y está bien para la primera ejecución, pero las vistas se recrean cada vez que las deslizo.
Cuando selecciono una pestaña, la otra pestaña llama a onStop () y cuando vuelvo a seleccionar la pestaña anterior, onCreateView () se vuelve a llamar y la vista se vuelve a llenar, lo que ralentiza y bloquea el subproceso de la interfaz de usuario.
- Android: Cambiar el color del texto de Tab en FragmentActivity
- ¿Cómo mostrar el contador de notificaciones no leído en Tabs dentro de TabLayout?
- No se puede agregar pestañas dentro de Fragmento de cajón de navegación Android
- Cambiar el tamaño del texto en la pestaña de android
- Android: ¿Cómo agregar iconos / drawables a la PagerTabStrip de la versión 4 de Android Support Lib?
¿Cuál es la forma correcta de crear fragmentos dentro de pestañas UNA VEZ y evitar recrear su vista al pasar entre otras pestañas?
- Tabulaciones desplazables de Android + estado de desplazamiento al pasar
- Android TabWidget sin TabHost con acciones personalizadas
- Las pestañas de Android ActionBar establecen la pestaña seleccionada inicialmente
- Android L Previsualizar el material denominado Tabs
- ¿Cómo funciona exactamente la acción_bar_embed_tabs en Android?
- Android, pestañas sin Barra de Acción
- Cualquier método alternativo para Casting de clase
- ¿Preload todas las vistas de los fragmentos?
Para agregar a lo que CommnosWare declaró, si está utilizando un paginador de vista, simplemente puede llamar a mViewPager.setOffscreenPageLimit(3);
Para mantener los tres en la memoria. Pero si su interfaz de usuario es demasiado pesada, puede notar algún jank. Intente revisar su código de configuración de la interfaz de usuario.
Tengo algunos elementos de interfaz de usuario muy creados dentro de las pestañas que tardan algún tiempo en crearse
Si "algún tiempo" es más de ~ 5 milisegundos, su aplicación está rota y necesita ser corregida. Utilice Traceview para determinar con precisión dónde está gastando su tiempo y, a continuación, repare los asuntos para que tome menos tiempo en el hilo principal de la aplicación.
¿Cuál es la manera correcta de crear fragmentos dentro de las pestañas UNA VEZ y evitar recrear su vista al pasar entre otras pestañas?
AFAIK, FragmentPagerAdapter
no debería tener el efecto que está describiendo (aunque FragmentStatePagerAdapter
hará). Pero, de nuevo, si soluciona su problema de rendimiento onCreateView()
, incluso FragmentStatePagerAdapter
no publicará ningún problema.
Simplemente agregue el código siguiente dentro de la clase Fragmento / Actividad principal donde TabAdapter declaró.
viewPager.setOffscreenPageLimit(tabLayout.getTabCount());
Las tabLayout y viewPager como sigue
TabLayout tabLayout = (TabLayout) root.findViewById(R.id.tab_layout); ViewPager viewPager = (ViewPager) root.findViewById(R.id.pager);