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

Respuesta
 
Herramientas
  #1  
Viejo 28/06/16, 11:49:39
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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?
__________________
Responder Con Cita


  #2  
Viejo 28/06/16, 12:41:56
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por kaiser75 Ver Mensaje
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?
Poblar el RecyclerView no, debe hacerse en primer plano. Generar la lista de donde obtiene los datos si puedes hacerlo en segundo plano.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 28/06/16, 14:59:23
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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!
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 29/06/16, 09:31:31
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
 Cita: Originalmente Escrito por kaiser75 Ver Mensaje
hay manera de poblar la lista en un hilo separado por ejemplo?
Lo que puedes hacer es obtener los datos en otro hilo (que si los estas obteniendo de internet ya lo estarás haciendo, ya que Android no permite hacer peticiones a la red en primer plano).
Añadir los datos a la lista debe hacerse en primer plano, como te ha dicho kriogeN.


 Cita: Originalmente Escrito por mocelet Ver Mensaje
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.
Eso iba a decir mientras leia tu respuesta. Picasso tiene una opcion de especificar un placeHolder mientras la imagen no se ha cargado todavia: http://square.github.io/picasso
Responder Con Cita
  #5  
Viejo 30/06/16, 12:24:08
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
 Cita: Originalmente Escrito por mocelet Ver Mensaje
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.
Pues igual es eso, porque las listas que tengo usan un Adapter personalizado, pero no uso el metodo ViewHolder (voy a pelo sin reciclar ...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.
__________________
Responder Con Cita
  #6  
Viejo 30/06/16, 13:52:24
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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!
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 08:53:02 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /