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!!
java android listview view asynctask onPostExecute doInBackground onPreExecute progressdialog dialog
Commentami!