The res/layout/Main. xml file contains the following content: <? XML version = "1.0" encoding = "UTF-8"?> <Linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: layout_width = "fill_parent" Android: layout_height = "fill_parent" Android: Orientation = "vertical"> <progressbar Android: id = "@ + ID/pbar" style = "? Android: ATTR/progressbarstylehorizontal "Android: layout_width =" fill_parent "Android: layout_height =" wrap_content "Android: visibility =" gone "/> <button Android: id = "@ + ID/btnstart" Android: layout_width = "fill_parent" Android: layout_height = "wrap_content" Android: TEXT = "@ string/btntext"/> </linearlayout> package syit. david; import android. app. activity; import android. OS. bundle; import android. OS. handler; import android. OS. message; import android. view. view; import android. view. view. onclicklistener; import android. widget. button; import android. widget. progressbar; public class demoactivity extends activity {public progressbar pbar; Public button btnstart;/** called when the activity is first created. * // @ override public void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); setcontentview (R. layout. main); // query control pbar = (progressbar) findviewbyid (R. id. pbar); btnstart = (button) findviewbyid (R. id. btnstart); // bind the listener event btnstart to the button. setonclicklistener (New buttonlistener ();} class buttonlistener implements onclicklistener {@ override public void onclick (view v) {pbar. setvisibility (view. visible); updatebarhandler. post (updatethread) ;}}// message Asynchronization Mechanism public handler updatebarhandler = new handler () {@ override public void handlemessage (Message MSG) {pbar. setprogress (MSG. arg1); updatebarhandler. post (updatethread) ;}}; public runnable updatethread = new runnable () {int I = 0; @ override public void run () {I + = 10; message MSG = updatebarhandler. obtainmessage (); MSG. arg1 = I; try {thread. sleep (1000);} catch (exception e) {e. printstacktrace ();} // Add MSG to the Message Queue updatebarhandler. sendmessage (MSG); if (I = 100) {updatebarhandler. removecallbacks (updatethread); pbar. setvisibility (view. gone );}}};}