entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Hablando de rendimiento en android... XML, Json o SQLite

Hola muy buenos días amigos de entredesarrolladores...

Actualmente estoy elaborando una aplicación en android, la misma será un lector de noticias para el periódico donde laboro.

enter image description here

Tengo muy poca experiencia en android y me gustaría saber cual método para la lectura de las noticias es el más recomendable para hacer que la aplicación tenga muy buen rendimiento, ya que esta consta de 11 pestañas tipo pestañas deslizantes. Actualmente estoy descargando por cada Fragment un archivo XML ubicado en carpetas dentro del servidor.

Otra cosa que me gustaría saber es como puedo ver el rendimiento y el consumo de recursos dentro del dispositivo con el cual hago debug.

De antemano muchisimas gracias.
Saludos.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola,

a mi parecer, estás usando un buen enfoque para plantear la app.

Si estás generando el XML programáticamente, podrías cambiarlo por JSON, que transmite menos datos, aunque pierdes semántica y es un poco más difícil de debuggear. Para el entorno que planteás en el que habrá varios usuarios concurrentes, creo que las desventajas del JSON compensarán por la velocidad y rendimiento del servidor.

Si estás tomando el XML de un RSS existente o similar, habría que ver si vale la pena el esfuerzo de achicar los datos a transmitor versus cachearlos.

En lo personal, revisaría el diseño de la interfaz: las imágenes quedan muy bien, pero mucha gente querrá ahorrarse la descarga. Se podrá hacer que las imágenes se vean solo cuando el usuario quiere, o mejor todavía, que en la configuración de la app sea el usuario quien determine si las queire ver con los titulares, con la noticia completa o por demanda.

Otra optimización posible es agregar al XML o JSON un timestamp del envío. Con esto, podrías guardar lo que recibís localemnte, por ejemplo en SQLite, y solo refrescarlo si pasaron X minutos de la última descarga. Poder ver datos off-line es algo bastante deseable. Se puede agregar el tiempo en minutos a la configuración de la app y también ponerle un botón que fuerce el refresco de la información por demanda.

Para ver rendimiento y consumo de recursos, no es complicado tomar el tiempo desde que se llama a la carga de los datos hasta que termina y revisar el uso de RAM de la APP... acá cuando hacen falta estas cosas la mostramos en algún lugar de la interfaz, o con un toast() que luego no pasa a producción. Es simple pero muy efectivo para ver la app andando cuando no estás desarrollando y viendo estos valores por la consola de debbugin de Eclipse.

En este thread de SO se muestran formas de acceder a la RAM: http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android

Get VM Heap Size by calling:

Runtime.getRuntime().totalMemory();

Get Allocated VM Memory by calling:

Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

Get VM Heap Size Limit by calling:

Runtime.getRuntime().maxMemory()

Get Native Allocated Memory by calling:

Debug.getNativeHeapAllocatedSize();

Saludos!

0voto

Villanuevand comentado

Muchisimas gracias por tu aporte @Leonardo-Tadei están muy acertadas tus apreciaciones.

0voto

Leonardo-Tadei comentado

Por nada, colega!

Recuerda luego de recibir varias respuestas o de pasado un tiempo, de marcar alguna respuesta como "la mejor" para que el tema quede solucionado.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta