2011-06-10 12 views
6

Escribo un archivo de descarga de soporte del programa. Cuando estoy en esta actividad de descarga, comienzo una barra de progreso y luego ejecuto un hilo para hacer las descargas. Este hilo envía un mensaje al hilo de la interfaz de usuario para notificar cuántos se han descargado con frecuencia. En el hilo principal (IU), actualizo la barra de progreso cuando recibo el mensaje. Si ocurre algún problema en el progreso de la descarga, enviará otro mensaje. Cuando el hilo principal recibe el mensaje, detiene la barra de progreso y muestra un nuevo AlertDialog para mostrar el motivo del error.El AlertDialog es invisible cuando la actividad vuelve al primer plano

Aquí hay una prueba especial para ello. Al descargar, cambie el programa a la configuración. Apague el WIFI/GPRS para desactivar la red.

Cuando vuelvo a mi programa, debe mostrar el fondo ui y un AlertDialog emergente para mostrar el motivo como me gustaría. Pero solo muestra el fondo ui (que significa la actividad principal) y con una luz de retroiluminación igual que las ventanas emergentes aún allí. Cuando presiono hacia atrás por primera vez, no pasa nada, excepto que la luz de fondo es brillante, como si hubiera cerrado una ventana emergente.

Creo que es porque cuando inicio el AlertDialog mi actividad no está en primer plano.

He intentado utilizar:

ActivityManager am = (ActivityManager)Update.this.getSystemService(Context.ACTIVITY_SERVICE); 
ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 

para juzgar si la actividad de la parte superior es la mía. Pero quiero mostrar el diálogo. Si el usuario no ve la actividad, cuando vuelva a mi actividad, quiero que muestre el cuadro de diálogo.

+0

¿Qué contexto está utilizando al crear AlertDialog.Builder? – areyling

+0

Tengo el mismo problema. ¿Lo has resuelto? – Jim

+0

Uso tostadas en su lugar. :( – Fakebear

Respuesta

3

De hecho, el cuadro de diálogo ya se muestra pero no es visible para el usuario y se volvería visible si gira el dispositivo.

Parece haber un problema de actualización/dibujo si descarta un diálogo de progreso y muestra otro diálogo nuevo inmediatamente cuando la actividad no está en primer plano. Durante mi prueba, tal problema no ocurre si se espera que finalice la acción de descarte para el diálogo de progreso y luego se muestra el nuevo cuadro de diálogo.

Una solución es mostrar el AlertDialog primero y luego cerrar el ProgressDialog. Eso funcionó para mi aplicación.

+0

Esto funcionó para mí! Gracias, amigo :) – Angelo

0

Creo que hay algún rey de error en Dialog. Tengo la misma situación, y la única solución fue cerrar el cuadro de diálogo actualizándolo por dialogDismiss(id) y mostrarlo nuevamente por showDialog(id).

Cuestiones relacionadas