在程序加载时常需要弹出一个对话框提示用户“正在加载,请稍后…”,而在运行这个对话框的时候主线程也同样需要工作,本文主要介绍在弹出对话框后主线程的动作和对话框收回后主线程的动作,同时这也是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;