Viewpager + FragmentpagerAdapet + Fragmentos + ListView = aplicación insanamente lenta
Tengo un viewpager en mi disposición, ese viewpager sostiene un sistema de 10 fragmentos. Cada fragmento tiene una vista de lista, que se rellena asincrónicamente. Actualmente estoy usando FragmentPagerAdapter como adaptador para el viewpager y las llamadas de API para rellenar la vista de lista se hace en onCreateView de cada fragmento. El golpe es increíblemente lento y la aplicación se cierra debido a los problemas de memoria.
¿Cómo lograr una visualización suave y responsable (viewpager + listview) como Google Play? Smooth swiping + buena caché de los elementos de la lista?
- Asistente condicional / inicialización con ViewPager
- ViewPager con indicador sin la biblioteca de soporte de Android
- Cómo agregar una vista personalizada en ViewPager para un tutorial
- NoClassDefFoundError al usar proguard
- Android: RecyclerView dentro de un ScrollView
- El indicador de paginación de círculo no se ve alrededor
- ViewPagerIndicator ClassNotFoundException?
- No se puede agregar ViewPagerIndicator a la aplicación con Gradle
- ViewPager dentro de Fragmento pierde contenido al volver a él
- Accidente después de agregar el elemento al menú de opciones de la barra de acción de Fragmento seguido de cambio de orientación
- ¿Existe un DotsPageIndicator predeterminado para Android móvil (no usar)?
- Cómo implementar en el icono de escuchar el clic en IconPageIndicator
- Dar texto de la pestaña seleccionada un color diferente utilizando ViewPagerIndicator
Hay muchas maneras de mejorar el rendimiento de un ViewPager
integrado con un ListView
.
Primero, cambie el PagerAdapter
de FragmentPagerAdapter
a FragmentStatePagerAdapter
. La diferencia es que usted carga 10 páginas dentro del buscapersonas. Y si pasó por todo el gerente sólo pondrá las páginas en onStop()
por lo tanto, se reserva espacio. Sin embargo, usar FragmentStatePagerAdapter
destruirá estas páginas pero guardará su instancia utilizando el método onSaveInstanceState
. Así que cuando regreses no te tomará mucho tiempo cargar y ahorrarás memoria.
Normalmente FragmentPagerAdapter
se utiliza con 3 páginas o menos.
La segunda forma de mejorar el rendimiento (pero drena la batería más rápidamente) es añadir esta línea a su AndroidManifest.xml
con su etiqueta de aplicación:
android:hardwareAccelerated="true"
La tercera forma es detectar el gesto de deslizamiento. Puede hacerlo implementando onPageChangeListener
luego en el método implementado onPageScrollStateChanged
, compruebe si la página está Idle
continuación, agregue ListView
. De lo contrario, detenga el uso de ListView
y desplácese a la página siguiente. Aquí hay una mejor explicación de este punto.
Espero que algunos de estos puntos pueden ayudarle a lograr un mejor rendimiento.
- Referencia sobre Dalvik o Java Virtual Machines?
- Android ViewPager con ScrollViews con ViewPagers dentro de ScrollViews