public class ProgressDialogExample extends Activity implements Runnable {
          private String pi_string;
          private TextView tv;
          private ProgressDialog pd;
 
          @Overrid
          public void onCreate(Bundle icicle) {
              super.onCreate(icicle);
              setContentView(R.layout.main)
              
              pd = ProgressDialog.show(this, "Working..", "Calculating Pi", true, false);
              Thread thread = new Thread(this);
              thread.start();
          }
          public void run() {
              pi_string = Pi.computePi(800).toString();
              handler.sendEmptyMessage(0);
          }
          private Handler handler = new Handler() {
              @Override
              public void handleMessage(Message msg) {
                  pd.dismiss();
                  tv.setText(pi_string);
              }
          };
      }
在這個例子中,當程式一開啟我們就會進入計算pi 的程序,並且顯示 Progress Dialog。由於計算必須費時,所以我們把它放在另一個單獨的Thread中。但當程式計算結束之後,這個單獨的Thread將會送一個資訊給handler,這時在handler裡頭也就會將 Progress Dialog 關閉。當然我們也可以選擇開啟另外一個在UI Thread的動作,您只需要改變handleMessage()裡頭的程式碼即可。
沒有留言:
張貼留言