调用AlertDialog不显示

问题遇到的现象和发生背景

写了一个利用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();
        }
    }
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img


这里直接dimiss了。
还有你问题的描述我看了半天没看懂

你没有用到任何多线程
那么你的代码就只会顺序执行
你把show写在函数最后,那当然的函数整个执行完了才会显示啊
如果你放到函数前面,也只是先阻塞住了窗体,代码不执行了,当用户点击确定之后,代码才继续运算
你想让用户在等待的过程中显示个东西,那需要至少2个线程来搞这个事情

java ProgressDialogUtil 类中 showProgressDialog 存在2个同名方法 可同时执行?