2010年12月23日 星期四

【Android】ProgressDialog與Thread

使用執行緒搭配處理中視窗。

部份程式運算過久的話可能會讓使用者誤會程式掛掉了,所以最好用執行緒讓它獨立執行,並搭配處理中視窗提示使用者或進一步的顯示進度。
package iamshiao.sample;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;

public class ProgressDialogSample extends Activity {
    
    //處理中視窗宣告
    private ProgressDialog pDialog = null;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //設定訊息內容後顯示於前景
        pDialog = ProgressDialog.show(
                this, 
                this.getString(R.string.processing_title),
                this.getString(R.string.processing_content)
                );
        
        //建構執行緒
        new Thread(){ 
            @Override
            public void run(){ 
                try{
                    //下行為表現效果,可取代為欲執行程式。
                    Thread.sleep(5000);
                }
                catch (Exception e){
                    e.printStackTrace();
                }
                finally{
                    pDialog.dismiss();
                }
            }
        }.start(); //開始執行執行緒
    }
}
pDialog取得由ProgressDialog.show產生的實體時即會在前景show出處理中視窗,你可以把這段改到任何你希望show出視窗的地方。 而相對於show,dismiss則是關閉處理中視窗的方法,如果沒有調用的話,處理中視窗就會一直存在於前景。

不過要注意,Thread中不能直接對 UI View做存取,必須要透過Handler才能存取

沒有留言:

張貼留言