2010-06-10 8 views
8

He visto la API de Android y otras publicaciones aquí en stackoverflow, pero no he podido resolver esto.android: mostrando un cuadro de diálogo de progreso

Mi aplicación descarga archivos a la tarjeta sd. Me gustaría mostrar un diálogo de "carga ..." mientras el archivo se está descargando y luego hacer que desaparezca cuando termine la descarga. Esto es lo que se me ocurrió con la API de Android:

ProgressDialog pd = ProgressDialog.show(this,"","Loading. Please wait...",true); 

//download file 

pd.cancel(); 

Sin embargo, el cuadro de diálogo no se muestra. cuando lo depuro, afirma que se muestra, pero obviamente no está en la pantalla.

¿qué puedo hacer?

+0

¿El código de descarga se ejecuta en un hilo separado? –

+0

no se ejecuta en el mismo hilo que la actividad. – mtmurdock

+0

Este es el problema :) –

Respuesta

3

Debe ejecutar el código de descarga en un subproceso separado. La forma más fácil es usar AsyncTask

Look también this article sobre cómo usarlo

+0

De hecho, tuve una reunión en la que hablamos de enhebrar y me di cuenta. también tuve que ponerlo en una actividad separada para que mi aplicación no intentara cargar el archivo antes de que finalizara la actividad de descarga. gracias por su ayuda! tienes las ruedas girando. – mtmurdock

2

que tiene un escenario algo similar, más de una pausa nivel de carga, mientras que la materia está siendo configuración para una fase de un juego. Inicio el diálogo, iniciar la carga de nivel en un hilo que se pasa el contexto y llamar a esto al final de la rosca:

mContext.runOnUiThread(new Runnable(){ 
    public void run() { 
     mContext.mProgressDialog.dismiss(); 
    } 
}); 

encuentro el método runOnUiThread() extremadamente útil.

Cuestiones relacionadas