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.

¿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?

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); 
  • Cómo enviar datos de la Actividad al Fragmento
  • Tablayout sólo con iconos
  • Android SlidingTabLayout con iconos
  • Fragmento de navegación dentro de una barra de acción con pestañas
  • Android.support.v4.app.FragmentPagerAdapter no se puede aplicar a android.app.FragmentManager
  • Las pestañas de la barra de acciones no llenan la barra de tabulación
  • ¿Qué evento se activa cuando se selecciona un fragmento de ficha?
  • Cómo configurar las pestañas en la parte inferior de la pantalla en android?
  • Añadir pestaña dentro de Fragmento ¿En Android?
  • Cómo utilizar tabContentStart para iniciar el contenido desde la mitad de la pantalla del dispositivo
  • Tablas de la barra de herramientas de Android en la parte inferior de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.