ProgressDialog和Handler結合運用顯示載入對話方塊
在程式載入時常需要彈出一個對話方塊提示使用者“正在載入,請稍後…”,而在執行這個對話方塊的時候主執行緒也同樣需要工作,本文主要介紹在彈出對話方塊後主執行緒的動作和對話方塊收回後主執行緒的動作,同時這也是ProgressDialog和Handler結合運用的一種典型情況。
1. 宣告ProgressDialog和Handler:
publicProgressDialog dialog = null;
public HandlermhandlerReceive;
2. 定義Dialog:
dialog =ProgressDialog.show(mContext, "請稍等", "正在載入,請稍等....");
new Thread(){
@Override
public void run(){
//執行請求資料的方法
try{
//這裡寫彈出對話方塊後執行的動作操作
……………..
mhandlerReceive.sendEmptyMessage(0);
isShow =true;
}
catch(Exception e){
e.printStackTrace();
}
}
}.start();
3. 定義Handler:
mhandlerReceive=new Handler(){
@Override
public voidhandleMessage(Message msg){
if(isShow == true)
{
dialog.dismiss();
isShow =false;
}
//這裡寫對話方塊消失後要執行的動作
}
};
4. 技巧提示:注意到我的程式碼中有一個isShow的boolean型值,這個值的作用是,如果Handler中要執行的操作有初始操作,也就是沒有彈出Dialog時也會執行到的時候,就需要isShow這個變數來控制是否需要讓Dialog消失了。如果沒有這段而直接寫dialog.dismiss();則有可能產生空指標的錯誤。當然在使用時還需要宣告變數:public boolean isShow = false;