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()
Documentation does not tell much about setIndeterminate(boolean), so I'm not sure. But I use this in my app, and it works:
Could you try it?
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
inAsyncTask.onPreExecute
, load images inAsyncTask.doInBackground
and dismiss the dialog inAsyncTask.onPostExecute
.