views:

483

answers:

3

Is there a standard "Loading, please wait" dialog I can use in Android development, when I invoke some AsyncTask (downloading some data from remote service for example)?

+5  A: 

You mean something like an indeterminate ProgressDialog?

Edit: i.e.

ProgressDialog dialog = ProgressDialog.show(context, "Loading", "Please wait...", true);

then call dialog.dismiss() when done.

Mirko Nasato
+3  A: 

Mirko is basically correct, however there are two things to note:

  1. ProgressDialog.show() is a shortcut that automatically creates a dialog. Unlike other dialogs, it should NOT be used in onCreateDialog(), as it will cause errors in Android 1.5.

  2. There are some further issues with AsyncTask + ProgressDialog + screen orientation changes that you should be aware of - check this out.

Daniel Lew
thanks for list of things to watch out! and by the way, cute Braid icon you have there :)
kape123
+2  A: 

If you implement runnable as well as extending Activity then you could handle the code like this...

private pDialog ProgressDialog;

public void downloadData() {
    pDialog = ProgressDialog.show(this, "Downloading Data..", "Please wait", true,false);
    Thread thread = new Thread(this);
    thread.start();
}

public void run() {
// add downloading code here
    handler.sendEmptyMessage(0);
 }

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        pDialog().dismiss();
        // handle the result here
    }
};

It's worth mentioning that you can set the content view of the progress dialog so you can display a custom message / image:)

pDialog.setContentView(R.layout.X); 
Ally