Activity 泄漏 window 令牌异常

Activity leaked window token exception

我正在向用户展示一个可运行的对话框并给他两个按钮,是和否。如果用户按“否”,我将完成 activity。如果用户按 YES,我想启动另一个 activity。这是对话代码:

ad.setTitle("Title");
                    ad.setMessage("Do you want to exit?");
                    ad.setIcon(R.drawable.common_signin_btn_icon_light);
                    ad.setButton(AlertDialog.BUTTON_POSITIVE, "Yes",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {

                                    // OPEN UP REGISTRATION ACTIVITY AGAIN
                                    ad.dismiss();
                            finish();
                            startActivity(new Intent(
                                    ActivityCodeVerification.this,
                                    ActivityRegister.class));
                                }
                            });
                    ad.setButton(AlertDialog.BUTTON_NEGATIVE, "No,Exit",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
ad.dismiss();
                            finish();
                            startActivity(new Intent(
                                    ActivityCodeVerification.this,
                                    ActivityRegister.class));
                                }
                            });

每当按下任何按钮时,我都会收到此异常:

Activity com.Rp.chatout.ActivityCodeVerification has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4055a530 that was originally added here

我做错了什么?? ad.show();

在完成前的两种情况下添加调用方法 dismiss() Activity。

出现此异常是因为您在对话框中保留对 Activity 的引用,而 Activity 已被销毁。

您需要在退出 Activity 之前调用 dismiss() 从您执行上述代码的地方。

在离开 Activity.

之前,应关闭所有 windows 和对话框