写了一个利用ProgressDialogUtil.showProgressDialog(MainActivity.this)以及ProgressDialogUtil.dismiss();可以显示及隐藏ProgressDialog的方法,希望可以在运算时跳出等待界面,但是我实际使用时程序会直接运算并显示结果,在等待时并不会跳出AlertDialog,请问是什么原因
此为MainActivity中调用的方法的地方(trans为OnClick事件)
public void trans(View view) {
ProgressDialogUtil.showProgressDialog(MainActivity.this);
if (!clicked) {
ProgressDialogUtil.showProgressDialog(MainActivity.this);
imageView.setImageBitmap(bitmap1);
clicked = !clicked;
} else {
imageView.setImageBitmap(bitmap);
clicked = !clicked;
}
generator(bitmap1);
for (int j = 0; j < Gcodes.size()-1; j++){
t+=Gcodes.get(j)+"\n";
}
txv1.setText(t);
ProgressDialogUtil.dismiss();
}
此为被调用之方法
public class ProgressDialogUtil {
private static AlertDialog mAlertDialog;
/**
* 彈出耗時對話方塊
* @param context
*/
public static void showProgressDialog(Context context) {
if (mAlertDialog == null) {
mAlertDialog = new AlertDialog.Builder(context, R.style.CustomProgressDialog).create();
}
View loadView = LayoutInflater.from(context).inflate(R.layout.custom_progress_dialog_view, null);
mAlertDialog.setView(loadView, 0, 0, 0, 0);
mAlertDialog.setCanceledOnTouchOutside(false);
TextView tvTip = loadView.findViewById(R.id.tvTip);
tvTip.setText("載入中...");
mAlertDialog.show();
}
public static void showProgressDialog(Context context, String tip) {
if (TextUtils.isEmpty(tip)) {
tip = "載入中...";
}
if (mAlertDialog == null) {
mAlertDialog = new AlertDialog.Builder(context, R.style.CustomProgressDialog).create();
}
View loadView = LayoutInflater.from(context).inflate(R.layout.custom_progress_dialog_view, null);
mAlertDialog.setView(loadView, 0, 0, 0, 0);
mAlertDialog.setCanceledOnTouchOutside(false);
TextView tvTip = loadView.findViewById(R.id.tvTip);
tvTip.setText(tip);
mAlertDialog.show();
}
/**
* 隱藏耗時對話方塊
*/
public static void dismiss() {
if (mAlertDialog != null && mAlertDialog.isShowing()) {
mAlertDialog.dismiss();
}
}
}
你没有用到任何多线程
那么你的代码就只会顺序执行
你把show写在函数最后,那当然的函数整个执行完了才会显示啊
如果你放到函数前面,也只是先阻塞住了窗体,代码不执行了,当用户点击确定之后,代码才继续运算
你想让用户在等待的过程中显示个东西,那需要至少2个线程来搞这个事情
java ProgressDialogUtil 类中 showProgressDialog 存在2个同名方法 可同时执行?