在做安卓项目的过程中发现,有时候网络太慢导致ProgressDialog一直显示,无法退出,按返回键也没有作用,只能在后台退出程序。于是,我决定对ProgressDialog的显示和消失进行改进。下面是有关的方法:
public void displayProgressDialog() {
this.displayProgressDialog("正在发送请求。。。");
}
public void displayProgressDialog(String msg) {
if (mProgressDialog ==null) {
mProgressDialog = ProgressDialog.show(Activity
A.this, "", msg, true);
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.setCancelable(false);
} else {
mProgressDialog.show();
}
mProgressDialog.setOnKeyListener(onKeyListener);
}
//add a keylistener for progress dialog
private OnKeyListener onKeyListener = new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
dismissProgressDialog();
}
returnfalse;
}
};
public void dismissProgressDialog() {
if (mProgressDialog !=null &&mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
mProgressDialog =null;
}
}
@Override
public void onBackPressed() {
if (mProgressDialog !=null && mProgressDialog.isShowing()) {
dismissProgressDialog();
} else {
super.onBackPressed();
}
}