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 08/07/15, 16:35:56
Array

[xs_avatar]
jamercues jamercues no está en línea
Miembro del foro
 
Fecha de registro: may 2011
Mensajes: 182
Modelo de smartphone: xperia s
Tu operador: Jazztel
Arrayadapter con asyntask

Hola a todos.

Hace unos meses me contrataron como programador en una empresa para desarrollar aplicaciones en Android, es la primera vez que trabajo de programador Android y tengo algunas dudas/problemillas

El caso es, que cuando abro otro activity, por ejemplo, en este caso, abró contactos, y me carga más de 2.000 registros, como podéis imaginar y me investigado, solo puedo ocupar 30mb de RAM y le cuesta unos 3 segundos en cargar el activity, mi pregunta es, hay alguna manera para que en vez de que se quede la pantalla en blanco, poner algún tipo de progressdialog o similar? Aunque sea un menaje estático que ponga cargando, pero quiero evitar la pantalla el blanco y que quede feo.

Por ahora, había probado con el asyntask, pero no he sabido, me da error, por lo de que no puedo modificar activitys desde otra clase.

A ver si me pueden ayudar.

Gracias!

Pdt. Preguntaría en mi trabajo, pero estoy yo solo y nadie sabe programar en android, mi experiencia era la del colegio, he sufrido en según que cosas, pero por ahora he superado todos los obstáculos

Última edición por jamercues Día 08/07/15 a las 16:38:05.
Responder Con Cita


  #2  
Viejo 08/07/15, 17:01:29
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 jamercues Ver Mensaje
Hace unos meses me contrataron como programador en una empresa para desarrollar aplicaciones en Android, es la primera vez que trabajo de programador Android
Como ya se comentó en otro hilo, lo sorprendente es que hayan contratado a alguien como desarrollador Android si no tiene experiencia


Por lo demás, podrías

1. Limitar el número de contactos que cargas (necesitas mostrar los 3000 de tirón?)
2. En realidad si podrías modificar una Activity desde una AsyncTask, pasando una referencia a la Activity (no es bonito pero poder se puede)
3. Tu mismo ya dices lo del ProgressDialog
Responder Con Cita
  #3  
Viejo 08/07/15, 18:55:13
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 Dexafree Ver Mensaje
Como ya se comentó en otro hilo, lo sorprendente es que hayan contratado a alguien como desarrollador Android si no tiene experiencia


Por lo demás, podrías

1. Limitar el número de contactos que cargas (necesitas mostrar los 3000 de tirón?)
2. En realidad si podrías modificar una Activity desde una AsyncTask, pasando una referencia a la Activity (no es bonito pero poder se puede)
3. Tu mismo ya dices lo del ProgressDialog
Respecto a la primera frase, +200.000, supongo que es lo típico de una Startup que busca programadores baratos en lugar de programadores experimentados. Luego el producto fracasa y no saben porque ha sido...

En cuanto al tema en cuestión, supongo que te refieres a los contactos de la agenda del móvil, en ese caso tengo que decirte que poco puedes hacer. Porque lo que tarda no es en rellenar el Adapter (he llegado a rellenar 30.000 contactos de la agenda y no se resiente en tiempo), lo que tarda es en rellenar el Cursor del ContactsContract, en el caso de 30.000 contactos me tarda 1 minuto más o menos. Es un problema bastante comentado en los foros de Android y que lleva sin resolverse desde Donut.

Lo que hago cuando me tengo que enfrentar a ese problema es hacerlo nada mas iniciar la aplicación en un hilo, y almacenar los contactos en un SQLite de la aplicación, en ese caso recorrer los 30.000 contactos del SQLite le lleva muchísimo menos tiempo. Cada vez que se abre la apliación repito el proceso, por si acaso hay contactos nuevos y hay que actualizar el SQLite.

En cuanto a la mejor forma de resolver el problema de rellenar el Adapter, lo que yo haría sería poner un "Loading Spinner" (un círculo que da vueltas) al RecyclerView (o ListView) y mostrarlo mientras en segundo plano (en un AsyncTask como has comentado, por ejemplo) obtener los contactos, una vez los tenga hacer el notifyDataSetChanged y mostrar los datos en su lugar.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 08/07/15, 23:31:14
Array

[xs_avatar]
jamercues jamercues no está en línea
Miembro del foro
 
Fecha de registro: may 2011
Mensajes: 182
Modelo de smartphone: xperia s
Tu operador: Jazztel
Gracias por contestar.

Los contactos no son los del móvil, los recibió desde el navision y los tengo en la base de datos del móvil, previa sincronización también.

Sobre que me hayan contratado, pues yo estoy contento y en general están contentos conmigo, stackoverflow me esta ayudando mucho.

Mañana miraré lo que comentas y a ver si consigo poner un mensaje o el progressdialog (que lo he intentado sin éxito, el que da vueltas, lo tengo en el login por ejemplo) aunque creó que me has dado a entender que es un problema que viene de muchas versión anteriores, quizás ponga en la sql un límit de 100 o 200, total, no creo que vayan contacto a contacto mientras tienen un buscador para buscar el contacto, pienso yo vamos, de todo hay en este mundo.

Decir, que ya ha pasado gente antes de mi por ese puesto y ya había proyectos donde he aprendido, pero hay muchas cosas que he corregido en la aplicación que estoy haciendo ahora porque me parecía que estaba mal, casi seguro vamos y no por no tener experiencia tiene que salir mal, el tema esta en ser insistente y que te guste tu trabajo, ami me gusta muchísimo más que en el que estaba antes, que tenía contrato fijo y lo deje por este con un contrato de menor tiempo, pero creo que he hecho un buen cambio

Última edición por jamercues Día 08/07/15 a las 23:37:20.
Responder Con Cita
  #5  
Viejo 09/07/15, 16:44:29
Array

[xs_avatar]
jamercues jamercues no está en línea
Miembro del foro
 
Fecha de registro: may 2011
Mensajes: 182
Modelo de smartphone: xperia s
Tu operador: Jazztel
No lo he conseguido, por algún causal, te refieres a ejecutar el asyntask vacío sin que haga nada? Por ejemplo, un do while de un booleano y que cambie cuando termine?

Esto se me acaba de ocurrir
Responder Con Cita
  #6  
Viejo 10/07/15, 13:03:53
Array

[xs_avatar]
pozako pozako no está en línea
Usuario poco activo
 
Fecha de registro: sep 2011
Mensajes: 48
Tu operador: Movistar

Lo ideal sería usar AsyncTask y meter todo el procedimiento de rellenar el array en el método doInBackground() y en el método onPreExecute() inicializar la vista que vas a poner al frente mientras se va a realizar en segundo plano la tarea y ya dependiendo de si esa vista fuera por ejemplo una barra de progreso y tuviera que ir actualizándose ya deberías de usar el método onProgressUpdate() para ir avanzando el progreso en la vista actual.
Responder Con Cita
Respuesta

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



Hora actual: 14:02:24 (GMT +1)



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

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