Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ProgressDialog doesn't appear immediately

I have a fragment with some buttons in it, when a button is clicked it should show a ProgressDialog, load an array of bitmaps and show it in the fragment in a gallery, dismiss ProgressDialog.

But the ProgressDialog doesn't show immediately, it take something like 1 or 2 seconds and it just blink at the moment when my gallery is show.

Im doing this after click:

try{
    progress = ProgressDialog.show(activity, "", "Loading images", true);

    //load images
    //show gallery

}catch(){
    //...
}finally{
    handler.sendEmptyMessage(0);
}

My Handler at onCreate:

handler = new Handler() {
    public void handleMessage(Message msg) {
         progress.dismiss();
    }
};

Im using Android 3.1

Logcat shows anything :(

03-09 13:17:32.310: D/DEBUG(5695): before show()
03-09 13:17:32.350: D/DEBUG(5695): after show()
like image 268
rafael Avatar asked Jul 18 '26 15:07

rafael


2 Answers

You are loading the images on the main UI thread - you should do this in a background process as it may cause your UI to become unresponsive (and cause your ProgressDialog to show up at the wrong time).

You should look into using an AsyncTask to carry out loading of the images in the background.

Display the ProgressDialog in AsyncTask.onPreExecute, load images in AsyncTask.doInBackground and dismiss the dialog in AsyncTask.onPostExecute.

like image 183
Che Jami Avatar answered Jul 21 '26 05:07

Che Jami


Documentation does not tell much about setIndeterminate(boolean), so I'm not sure. But I use this in my app, and it works:

ProgressDialog fDialog = new ProgressDialog(your-context);
fDialog.setMessage(your-message);
fDialog.setIndeterminate(true);
// fDialog.setCancelable(cancelable);
fDialog.show();

Could you try it?


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!