|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Problema con Fragments
Vereis, tengo un problema con unos fragments, al pulsar para abrir el fragment desde el navigationView este se ralentiza bastante hasta que se abre del todo, me crea unos lags muy molestos ( parece touchwiz
), esto me pasa con todos los fragments de la aplicacion pero a medida que vas usando la aplicacion se van haciendo mas fluidos. Los fragmentos solamente incluyen una lista que muestra unos textos y pequeñas imagenes, hay manera de poblar la lista en un hilo separado por ejemplo?
__________________
|
|
|
|
#2
|
||||
|
||||
|
Vereis, tengo un problema con unos fragments, al pulsar para abrir el fragment desde el navigationView este se ralentiza bastante hasta que se abre del todo, me crea unos lags muy molestos ( parece touchwiz
), esto me pasa con todos los fragments de la aplicacion pero a medida que vas usando la aplicacion se van haciendo mas fluidos. Los fragmentos solamente incluyen una lista que muestra unos textos y pequeñas imagenes, hay manera de poblar la lista en un hilo separado por ejemplo?![]() |
| Gracias de parte de: | ||
|
#3
|
||||
|
||||
|
Tendrías que identificar dónde tarda tiempo, si en la obtención de datos inicial, en la preparación de la lista para el adapter o en la preparación de cada vista de la lista (el getView).
Si es porque necesitas un proceso inicial de carga siempre puedes poner una vista que diga "cargando" antes de mostrar la lista. Y la carga de datos en background claro. Así no hay lag y el usuario sabe que tiene que esperar un poco. Otra opción es que esa carga la haga cada elemento de la lista, no tiene sentido cargar cosas que no se van a mostrar. En ese caso el lag se trasladará al hacer scroll, que no será fluido porque el getView se tomará su tiempo. Ahí la mejor solución es meter una AsyncTask, que la vista se cree rápidamente y en background cargue la imagen, procese el texto o lo que tenga que hacer. Aunque el contenido esté incompleto al mostrar la lista, el lag desaparece y el contenido aparecerá tan pronto se cargue. En ese caso, acuérdate de cancelar la tarea al reciclar la vista. Esta última opción es la que implementan por dentro bibliotecas que facilitan mostrar imágenes u otros recursos en vistas mostrando una imagen por defecto mientras no se ha cargado.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Añadir los datos a la lista debe hacerse en primer plano, como te ha dicho kriogeN.
__________________
|
|
#5
|
||||
|
||||
|
Tendrías que identificar dónde tarda tiempo, si en la obtención de datos inicial, en la preparación de la lista para el adapter o en la preparación de cada vista de la lista (el getView).
Si es porque necesitas un proceso inicial de carga siempre puedes poner una vista que diga "cargando" antes de mostrar la lista. Y la carga de datos en background claro. Así no hay lag y el usuario sabe que tiene que esperar un poco. Otra opción es que esa carga la haga cada elemento de la lista, no tiene sentido cargar cosas que no se van a mostrar. En ese caso el lag se trasladará al hacer scroll, que no será fluido porque el getView se tomará su tiempo. Ahí la mejor solución es meter una AsyncTask, que la vista se cree rápidamente y en background cargue la imagen, procese el texto o lo que tenga que hacer. Aunque el contenido esté incompleto al mostrar la lista, el lag desaparece y el contenido aparecerá tan pronto se cargue. En ese caso, acuérdate de cancelar la tarea al reciclar la vista. Esta última opción es la que implementan por dentro bibliotecas que facilitan mostrar imágenes u otros recursos en vistas mostrando una imagen por defecto mientras no se ha cargado. ![]() ...maaal) ya que solo muestra unos 18/20 elementos por lista, el ViewHolder me daba problemas al hacer scroll, me duplicaba unos textos que solo deben mostrarse en determinadas posiciones de la lista y que cambian de color y estos me salian en unas cuantas posiciones erroneas.
__________________
|
|
#6
|
||||
|
||||
|
Por los síntomas que comentabas, reciclar o no es lo de menos. Eso solo ahorra leer el layout y crear el objeto de la vista. Y principalmente afecta a la fluidez del scroll, no al lag de la aplicación.
El problema es algo que se ejecuta en el hilo principal y tarda mucho tiempo y que conforme usas la app no hace falta hacerlo más. Algo de inicialización que, o bien haces en background o bien lo troceas para que se haga bajo demanda al mostrarse en la lista.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||