android.view.WindowLeaked:活动 com.Forewarn.ForewarnApp.activities.SignInActivity 已泄露 [重复]

Posted

技术标签:

【中文标题】android.view.WindowLeaked:活动 com.Forewarn.ForewarnApp.activities.SignInActivity 已泄露 [重复]【英文标题】:android.view.WindowLeaked: Activity com.Forewarn.ForewarnApp.activities.SignInActivity has leaked [duplicate] 【发布时间】:2018-05-24 14:44:22 【问题描述】:

当我在我的应用程序中使用 aleart 对话时,我遇到了上述错误。即使我在关闭我的活动时关闭对话,我也会收到此错误:

android.view.WindowLeaked: Activity com.Forewarn.ForewarnApp.activities.SignInActivity has leaked window DecorView@3dadc87[] that was originally added here
                                                                               at android.view.ViewRootImpl.<init>(ViewRootImpl.java:424)
                                                                               at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331)
                                                                               at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
                                                                               at android.app.Dialog.show(Dialog.java:316)
                                                                               at com.Forewarn.ForewarnApp.activities.SignInActivity.getFingerPrint(SignInActivity.java:707)
                                                                               at com.Forewarn.ForewarnApp.activities.SignInActivity.onCreate(SignInActivity.java:280)
                                                                               at android.app.Activity.performCreate(Activity.java:6672)
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
                                                                               at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                               at android.os.Looper.loop(Looper.java:154)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:6123)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 

我尝试添加这个:

 @Override
    public void onDestroy()
        super.onDestroy();
        if (alertDialog != null && alertDialog.isShowing())
            alertDialog.dismiss();
            SignInActivity.alertDialog.dismiss();
        
    

这里我在下面的行中遇到错误:

 myMsg.setGravity(Gravity.CENTER_HORIZONTAL);
                                myMsg.setPadding(10,50,10,0);
                                myMsg.setTextColor(getResources().getColor(R.color.colorPrimary));
                                myMsg.setTextSize(16);
                                alertDialogBuilder.setView(myMsg);
                                //alertDialogBuilder.setMessage("Please place your fingertip on the scanner to verify your identity and Login");
                                alertDialogBuilder.setNegativeButton("Cancel",new DialogInterface.OnClickListener() 
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) 
                                        //finish();
                                        Constant.isCanceled = "true";
                                        dialog.dismiss();
                                    
                                );

                                alertDialog = alertDialogBuilder.create();
                                alertDialog.show();

【问题讨论】:

试试这个:-***.com/questions/2850573/… 请大家仔细看看我的问题,我提到我已经尝试过使用该代码,为什么它仍然会出现 idk。想想吧。 两个代码 sn-p 驻留在同一个 Activity 中? 是的,仅在同一活动中。 我在活动类之外使用了另一个对话,该类是从活动中调用的,这就是我创建静态对话并在我的活动中关闭该对话的原因。 【参考方案1】:

Window泄漏异常有这个原因,当Activity上下文不存在时显示dialog,要解决这个问题你应该检查Activity是否存在:

if(getActivity()!= null && !getActivity().isFinishing())
        Dialog.show();

【讨论】:

这里的 getActivity() 是什么? @Lucky SignInActivity

以上是关于android.view.WindowLeaked:活动 com.Forewarn.ForewarnApp.activities.SignInActivity 已泄露 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

android.view.WindowLeaked:活动 com.Forewarn.ForewarnApp.activities.SignInActivity 已泄露 [重复]

Android : Window Manager : android 视图窗口泄露

Activity has leaked window that was originally added

Activity has leaked window that was originally added

活动在使用画中画时泄漏了窗口