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 31/05/13, 11:47:52
Array

[xs_avatar]
David_91 David_91 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2013
Localización: Valencia
Mensajes: 25
Modelo de smartphone: Samsung Galaxy S2
Tu operador: Orange
ProgressDialog o parecido mientras se realiza una tarea AsyncTask

Buenos días

Como dice en el titulo me gustaría crear un ProgressDialog o algo parecido mientras se lanza una tarea en segundo plano, intento explicarlo un poco mejor:

Lanzo un método desde la vista al pulsar un botón, este método llama a la tarea, (sería como separar un poco el código, el método llamado sería el controlador el cual llama ya a la DB), entonces durante el proceso hasta que la tarea esta de vuelva un GET me gustaría mostrar un a barra de progreso para que la gente no crea que la aplicación se ha quedado bloqueada.

Yo esto lo realice en java, pero a la tarea le añadía el escuchador PropertyChangeListener y en el método implementado iba comprobando el cambio de estado y así finalizaba la barra de progreso, pero aquí me pierdo un poco.

Un saludo y gracias
Responder Con Cita


  #2  
Viejo 31/05/13, 12:13:36
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
1) Pones el ProgressDialog como variable global del AsyncTask.

2) Lo creas en el constructor del AsyncTask y lo pones como setCancelable a false

3) En el onPreExecute le haces el "show"

4) En el onPostExecute le haces el "dismiss"

Así lo hago yo y funciona perfectamente, pero yo lo hago con un Dialog personalizado. Pero antes lo hacía con ProgressDialog y funciona.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 31/05/13, 12:44:36
Array

[xs_avatar]
David_91 David_91 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2013
Localización: Valencia
Mensajes: 25
Modelo de smartphone: Samsung Galaxy S2
Tu operador: Orange
El problema es que, la tarea no extiende de Activity, y no es una inerclass, entonces, como le paso el contexto para poder utilzarla?? Al intentar hacer un getActivity() me dice que no es static entonces no puedo crear el progress Dialog, no puedo ponerlo static puesto que, esa clase no la puedo tocar,... pff ando perdido
Responder Con Cita
  #4  
Viejo 31/05/13, 13:16:27
Array

[xs_avatar]
David_91 David_91 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2013
Localización: Valencia
Mensajes: 25
Modelo de smartphone: Samsung Galaxy S2
Tu operador: Orange
Arreglado, he enviado el Activity de clase en clase hasta la clase del AsyncTask
Responder Con Cita
  #5  
Viejo 31/05/13, 13:47:30
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
Si, así lo hago yo. Realmente enviando el Context es suficiente.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 06/06/13, 09:09:45
Array

[xs_avatar]
David_91 David_91 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2013
Localización: Valencia
Mensajes: 25
Modelo de smartphone: Samsung Galaxy S2
Tu operador: Orange
Me surge un nuevo problema en esto, tengo en el método onPreExecute tengo esto

@Override
protected void onPreExecute() {
barraProgreso = new ProgressDialog(activity);
barraProgreso.setCancelable(false);
barraProgreso.setMessage("Obteniendo saldo...");
barraProgreso.show();
}

Lo cual en teoría y según he visto, debe mostrar la barra de progreso, el problema es que, al pulsar el botón que lanzaría esta tarea, se queda como bloqueado y apenas unos mili segundos antes de que aparezca un Dialog sale el progressDialog, entonces apenas se llega a ver, la idea es que mientras esté realizando la tarea se muestre le progressDialog.

Otra cosa un poco extraña que veo que, la tarea termina antes de llegar al onPostExecute, me parece un poco extraño, he trabajdo con SwingWorker en Java, pero claro, en Java le añades un escuchador de tipo propertyChange y lees el cambiod e estado, cuando el StateValue es Done, entonces ocultas la progressBar, el problema en Android es que, en teoría termina cuando recibes algo en el get().

No sé, no entiendo muy bien porque no se muestra mientras se está realizando y si cuando le queda un segundo.

Edito: Obviamente en el onPostExecute tengo el dismiss() para ocultarlo
Responder Con Cita
  #7  
Viejo 06/06/13, 10:36:50
Array

[xs_avatar]
David_91 David_91 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2013
Localización: Valencia
Mensajes: 25
Modelo de smartphone: Samsung Galaxy S2
Tu operador: Orange
He hecho unos loggers:

En el onPreExecute:
Los he puesto antes del .show() y después del show()
En el doInBackground y en el onPostExecute antes y después del dismiss()

Dan true, pero la barra se ve solamente justo antes de mostrar el Intent que se lanza, la interfaz se queda como bloqueada, y lo peor es que, si ha de esperar los 10 segundos del timeout (cosa que me ayudó ayer kriogeN) se queda esos 10 minutos la interfaz congelada,.. no entiendo nada la verdad es bastante raro si en teoría dice que si está mostrándose, porque luego no la veo hasta un mili segundo antes de mostrar el Intent??
Responder Con Cita
Respuesta

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



Hora actual: 09:16:34 (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 / 邮件联系 /