1. package activity_14.wyw;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.os.Message;  
  7. import android.view.Menu;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. import android.widget.ProgressBar;  
  12.  
  13. public class HandlerActivity extends Activity {  
  14.  
  15.     private Button startButton = null;  
  16.     private ProgressBar bar = null;  
  17.  
  18.     @Override 
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_handler);  
  22.         bar = (ProgressBar) findViewById(R.id.bar);  
  23.         startButton = (Button) findViewById(R.id.startButton);  
  24.         startButton.setOnClickListener(new StartButtonListener());  
  25.     }  
  26.  
  27.     class StartButtonListener implements OnClickListener {  
  28.         public void onClick(View v) {  
  29.             // TODO Auto-generated method stub  
  30.             bar.setVisibility(View.VISIBLE);  
  31.             updateBarHandler.post(updateThread);  
  32.         }  
  33.  
  34.     }  
  35.  
  36.     @Override 
  37.     public boolean onCreateOptionsMenu(Menu menu) {  
  38.         getMenuInflater().inflate(R.menu.activity_handler, menu);  
  39.         return true;  
  40.     }  
  41.  
  42.     Handler updateBarHandler = new Handler() {  
  43.         public void handleMessage(Message msg) {  
  44.             bar.setProgress(msg.arg1);  
  45.             updateBarHandler.post(updateThread);  
  46.         }  
  47.     };  
  48.  
  49.     Runnable updateThread = new Runnable() {  
  50.         int i = 0;  
  51.  
  52.         public void run() {  
  53.             // TODO Auto-generated method stub  
  54.             System.out.println("BEGIN THREAD");  
  55.             i = i + 10;  
  56.             Message msg = updateBarHandler.obtainMessage();  
  57.             msg.arg1 = i;  
  58.  
  59.             try {  
  60.                 Thread.sleep(1000);  
  61.             } catch (InterruptedException e) {  
  62.                 // TODO Auto-generated catch block  
  63.                 e.printStackTrace();  
  64.             }  
  65.  
  66.             updateBarHandler.sendMessage(msg);  
  67.               
  68.             if (i == 100) {  
  69.                 updateBarHandler.removeCallbacks(updateThread);  
  70.  
  71.             }  
  72.  
  73.         }  
  74.     };  
  75.  
  76. }