Progress Dialog and Threads

From John Freier
Jump to: navigation, search

These are nice to use when you need to create a "waiting..." dialog. For example when you make a call to the internet, you would use one, so the user does not have to wait.

One of the issues I ran across was accessing class variables. After a lot of research, I figured out, that you can access variable through a class Handler. You pass variable to the handler through the messages.

Example:

Create a private class variable.

private ProgressDialog dialog;

This is the handler so that you can access class variables. example: text boxes, images...

private Handler handlerRefresh = new Handler()
{
     @Override
     public void handleMessage(Message msg)
     {
          Bundle resBundle = (Bundle) msg.obj;
          String name= resBundle.getString("key");
     }
}

This is the thread creation, it will show the dialog and process in the background.

dialog = ProgressDialog.show(CurrentActivity.this, "","Please wait...", true);
new Thread(new Runnable()
{
     public void run()
     {
          // Threaded process...
          String name = "John";

          Message myMessage=new Message();
          Bundle resBundle = new Bundle();
          resBundle.putString("key", name);
          myMessage.obj=resBundle;
          handlerRefresh.sendMessage(myMessage);
          dialog.dismiss();
     }
}).start();