使用AlertDialog出现WindowLeaked错误

你好,我正在使用AlertDialog,如果单击确定按钮,就可以从一个Activity切换到另一个Activity。结果在切换Activity后出现了错误,这是为什么呢。
这是我的代码

package com.example.word.Activity;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.TextView;

import com.example.word.Bean.TranslateBean;
import com.example.word.Bean.WordsBean;
import com.example.word.IView.IExtraWordView;
import com.example.word.Presenter.ExtraWordPresenter;
import com.example.word.R;
import com.example.word.Util.NetUtil;
import com.example.word.Util.UrlPlayer;

public class Main31Activity extends AppCompatActivity implements IExtraWordView {
    ExtraWordPresenter ext;
    TextView task, word, yinbiao,task2;
    String ex5="";
    String ci="";
    String ci4="";
    Intent intent;
    String str="";
    String uri="";
    ImageButton imgbtn2;
    AlertDialog alg2,alg3,alg4;
    String ex2;
    Asy asy;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        root();
        setContentView(R.layout.activity_main31);
        intent=getIntent();
        str=intent.getStringExtra("word");
        task = findViewById(R.id.task);
        task2=findViewById(R.id.task2);
        word = findViewById(R.id.word);
        imgbtn2=findViewById(R.id.imgbtn2);
        yinbiao = findViewById(R.id.yinbiao);
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
        imgbtn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                UrlPlayer.URLPlayer(Main31Activity.this,uri);
            }
        });
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if(NetUtil.getNetType(Main31Activity.this)==-1){
            AlertDialog.Builder al = new AlertDialog.Builder(Main31Activity.this);
            al.setTitle("提示");
            al.setMessage("不好意思,XXXXXX");
            al.setCancelable(false);
            al.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    alg3.dismiss();
                    Intent intent = new Intent(Main31Activity.this, Main30Activity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            });
            alg3 = al.create();
            alg3.show();
        }
        else {
            asy=new Asy();
            asy.execute();//异步的网络操作
        }
    }

    @Override
    public void showExtraTrans(WordsBean bean) {
        if(NetUtil.getNetType(Main31Activity.this)!=-1) {
            if (bean.getExplain().size() != 0) {
                if (bean.getFayin().size() != 0) {
                    word.setText(bean.getWord());
                    yinbiao.setText(bean.getYinbiao().get(0));
                    uri = bean.getFayin().get(0);
                    for (int i = 0; i < bean.getCixing().size(); i++) {
                        if (i != 0) {
                            ci4 = "\n";
                        } else {
                            ci4 = "";
                        }
                        String ci1 = bean.getCixing().get(i);
                        String ci2 = "\n" + bean.getExplain().get(i);
                        String ci3 = ci4 + ci1 + ci2;
                        ci = ci + ci3;
                    }
                    for (int i = 0; i < bean.getLiju().size(); i++) {
                        ex2 = bean.getLiju().get(i).getOrig() + "\n" + bean.getLiju().get(i).getTrans();
                        if (i != 0) {
                            ex5 = ex5 + "\n" + ex2;
                        }
                        if (i == 0) {
                            ex5 = ex2;
                        }
                    }
                    task2.setText(ci);
                    task.setText(ex5);
                }
            }
            if (bean.getExplain().size() == 0) {
                AlertDialog.Builder al = new AlertDialog.Builder(Main31Activity.this);
                al.setTitle("提示");
                al.setMessage("不好意思,XXXXXX");
                al.setCancelable(false);
                al.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        alg4.dismiss();
                        Intent intent = new Intent(Main31Activity.this, Main30Activity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                    }
                });
                alg4 = al.create();
                alg4.show();
            }
            if(bean.getExplain().size()!=0) {
                if (bean.getFayin().size() == 0) {
                    AlertDialog.Builder al = new AlertDialog.Builder(Main31Activity.this);
                    al.setTitle("提示");
                    al.setMessage("不好意思,XXXXXX。");
                    al.setCancelable(false);
                    al.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            alg2.dismiss();
                            Intent intent = new Intent(Main31Activity.this, Main30Activity.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(intent);
                        }
                    });
                    alg2 = al.create();
                    alg2.show();
                }
            }
        }
    }
    /*退出按钮退出方法*/
    public void root() {
        if (!isTaskRoot()) {
            final Intent intent = getIntent();
            final String intentAction = intent.getAction();
            if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
                finish();
                return;
            }
        }
    }
    /*系统自带按钮的监听*/
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        AudioManager audioManager  = (AudioManager) getSystemService(Context.AUDIO_SERVICE);//音量管理器
        /*返回按钮监听*/
        if(keyCode==KeyEvent.KEYCODE_BACK){
            Intent intent=new Intent(Main31Activity.this,Main30Activity.class);//回退到英汉词典查询界面
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
        /*音量加按钮*/
        if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) {
            audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FX_FOCUS_NAVIGATION_UP);
            return true;
        }
        /*音量减按钮*/
        if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN) {
            audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FX_FOCUS_NAVIGATION_UP);
            return true;
        }
        return true;
    }
    class Asy extends AsyncTask{

        @Override
        protected Object doInBackground(Object[] objects) {
            ext = new ExtraWordPresenter(Main31Activity.this);//网络操作,采用MVP模式
            ext.getData(str);
            return null;
        }
    }
}

出现的错误如下

2022-03-23 11:04:52.313 11197-11197/com.example.word E/WindowManager: android.view.WindowLeaked: Activity com.example.word.Activity.Main31Activity has leaked window DecorView@b6e6c20[Main31Activity] that was originally added here
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:791)
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:775)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:408)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:109)
        at android.app.Dialog.show(Dialog.java:379)
        at com.example.word.Activity.Main31Activity.showExtraTrans(Main31Activity.java:138)

意思是你在跳转页面的时候,本页面还有弹窗没有dismiss,你检查一下代码

在onDestory方法里销毁你的AlertDialog,估计是你存在多个AlertDialog,有的没销毁掉