2011-06-06 12 views
9

Tengo una situación en la que estoy cargando un montón de imágenes. Durante este proceso, estoy tratando de mostrar un Diálogo de progreso hasta que las imágenes se carguen completamente. Tengo overrided el método onBackPressed(), de modo que cuando el usuario presiona el botón Atrás, la actividad habrá finalizado.descartar Progress Dialog

Pero si presiono el botón Atrás cuando se muestra el cuadro de diálogo de progreso, no se llamó al evento de la tecla Atrás. Así que traté de proporcionar progressDialog.setCancelable(true). Así que esto ahora me permite descartar el cuadro de diálogo de progreso, pero mi evento clave de respaldo no se llama de todos modos, por lo que mi actividad carga imágenes en segundo plano.

Entonces, ¿cómo puedo hacer que tanto el progressDialog como la actividad se detengan cuando el usuario presiona la tecla Atrás.

Respuesta

7

Uso Dialog.setOnCancelListener cancelar su tarea en segundo plano método

+3

Por favor, intente ser más específico la próxima vez. –

+1

@MarvinLabs: ¿cómo usar eso? – Deepzz

1

Uso onKeyDown(), sin embargo, tendría que comprobar si el diálogo está mostrando, si el botón se presiona el botón es 'trasero', y también se debe realiza una llamada a super.onKeyDown() para asegurarte de que el método predeterminado también se ejecuta.

public boolean onKeyDown(int keyCode, KeyEvent event) 

{ 

if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing()) 
{ 
    // DO WHATEVER YOU WANT 
} 

// Call super code so we dont limit default interaction 
super.onKeyDown(keyCode, event); 

return true; 
} 

¿Se puede pegar el código para la respuesta correcta?

+0

Intenté esto también. No funcionó. –

+0

¿dónde está tu respuesta? ¿puedes detener el servicio de fondo? –

7

Ok. Al fin descubrí una solución.

progressDialog.setCancelable(true); 
    progressDialog.setOnCancelListener(new OnCancelListener() { 

     public void onCancel(DialogInterface dialog) { 

     Log.i("inside on cancel","Cancel Called"); 
     finish(); //If you want to finish the activity. 
     } 
    }); 
+1

gracias me ayudó :) – UMAR

+1

Gracias me ayuda .... – ADT

3

Cargue sus imágenes en una conversación diferente. Cuando el usuario indique que desea cancelar la carga, configure un indicador que esté marcado en el ciclo de procesamiento del hilo de carga. También puede llamar al método de interrupción del hilo de carga() para manejar aquellos casos en los que el hilo está atascado en wait() o sleep() o algo así.