Home / Programmazione / Java Android / Usare i ProgressDialog in Android
Mattepuffo

Usare i ProgressDialog in Android

Usare i ProgressDialog in Android

I ProgressDialog sono molto usati anche in ambito mobile, in quanto consentono di "bloccare" lo schermo avvertendo l'utente quando una determinata operazione finisce.

In generale la sequenza per usare questo oggetto è questa:

ProgressDialog pd = new ProgressDialog(Activity.this);
pd.setMessage("loading...");
pd.show();
// DO STUFF
pd.dismiss();

In sostanza, creiamo il dialog, lo avviamo, eseguiamo le operazioni e lo chiudiamo.

Solo che non è molto multi-thread, e soprattutto non funzionerebbe se facessimo operazioni in modo asincrono.

Come fare se volessimo eseguire una operazione asincrcona (come interrogare un web service)?

Molto semplice:

    public class MyAsyncTask extends AsyncTask {

        private ProgressDialog pd = new ProgressDialog(ActivityMain.this);

        @Override
        protected void onPreExecute() {
            pd.setMessage("loading...");
            pd.show();
        }

        @Override
        protected Object doInBackground(Object... params) {
            // DO STUFF
            return null;
        }

        @Override
        protected void onPostExecute(Object result) {
            pd.dismiss();
        }
    }

Facciamo l'Override di tre metodi, che hanno nomi abbastanzi chiari.

Prima di eseguire qualsiasi operazione (onPreExecute) avviamo il dialog.

Poi svogliamo tutte le nostre operazioni (doInBackground).

Infine chiudiamo il dialog (onPostExecute).

Ovviamente nel pre e nel post possiamo fare anche altre cose, non sono metodi ad uso esclusino del dialog.

In genere nel post si fanno anche aggiornamenti della View (come ricaricare una ListView).

Ciao!!