Android LoginActivity已泄漏窗口DecorView@bb62df1最初添加到此处的[LoginActivity]
我不断收到一个错误,我的登录活动有一个某种泄漏的窗口, 这是发生错误的代码块。我试图分别关闭对话框和警报框,但仍然会出现此错误Android LoginActivity已泄漏窗口DecorView@bb62df1最初添加到此处的[LoginActivity],android,android-alertdialog,Android,Android Alertdialog,我不断收到一个错误,我的登录活动有一个某种泄漏的窗口, 这是发生错误的代码块。我试图分别关闭对话框和警报框,但仍然会出现此错误 try { AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); builder.setTitle(R.string.login_ok_title); builder.setMessage(R.string.lo
try
{
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setTitle(R.string.login_ok_title);
builder.setMessage(R.string.login_ok_text).setCancelable(false).setPositiveButton(R.string.ok, (dialog, id) ->
{
Intent intent =new Intent(LoginActivity.this, TrackActivity.class);
startActivity(intent);
TrackManagerService trackManager =TrackManagerService.getInstance();
if (trackManager != null) {
trackManager.setLoginListener(null);
}
LoginActivity.this.finish();
dialog.dismiss();
});
alert = builder.create();
alert.show();
}
catch (Exception ex)
{
ex.printStackTrace();
Intent intent = new Intent(LoginActivity.this, TrackActivity.class);
alert.dismiss();
startActivity(intent);
TrackManagerService trackManager = TrackManagerService.getInstance();
if (trackManager != null)
{
trackManager.setLoginListener(null);
}
finish();
}
这是错误日志
E/WindowManager: android.view.WindowLeaked: Activity com.example.tornado_app.LoginActivity has leaked window DecorView@59e20b9[LoginActivity] that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:627)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:389)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:131)
at android.app.Dialog.show(Dialog.java:531)
at com.example.tornado_app.LoginActivity$2.lambda$onLoginResult$4$LoginActivity$2(LoginActivity.java:160)
at com.example.tornado_app.-$$Lambda$LoginActivity$2$YvCiBtxWavxZ1iGtdLspSkuZOdU.run(Unknown Source:6)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
E/WindowManager:android.view.WindowLeaked:Activity com.example.tornado\u app.LoginActivity已泄漏窗口DecorView@59e20b9最初添加到此处的[LoginActivity]
在android.view.ViewRootImpl。(ViewRootImpl.java:627)
位于android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:389)
在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:131)
在android.app.Dialog.show上(Dialog.java:531)
在com.example.tornado_app.LoginActivity$2.lambda$onLoginResult$4$LoginActivity$2(LoginActivity.java:160)
在com.example.tornado_应用程序上。-$$Lambda$LoginActivity$2$YvCiBtxWavxZ1iGtdLspSkuZOdU.run(未知来源:6)
位于android.os.Handler.handleCallback(Handler.java:907)
位于android.os.Handler.dispatchMessage(Handler.java:105)
位于android.os.Looper.loop(Looper.java:216)
位于android.app.ActivityThread.main(ActivityThread.java:7625)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
在显示对话框之前,请尝试检查活动是否已完成
if (!isFinishing()){
alert.show();
}
在显示对话框之前,请检查活动是否完成
if (!isFinishing()){
alert.show();
}
为什么要使用2次
dialog.discouse()代码>活动完成后,如何关闭对话框?请尝试添加以下代码
try {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setTitle(R.string.login_ok_title);
builder.setMessage(R.string.login_ok_text).setCancelable(false).setPositiveButton(R.string.ok, (dialog, id) ->
{
//dialog.dismiss(); //Remove this
Intent intent = new Intent(LoginActivity.this, TrackActivity.class);
startActivity(intent);
TrackManagerService trackManager = TrackManagerService.getInstance();
if (trackManager != null) {
trackManager.setLoginListener(null);
}
LoginActivity.this.finish();
//dialog.dismiss(); //Remove this
});
alert = builder.create();
alert.show();
} catch (Exception ex) {
ex.printStackTrace();
Intent intent = new Intent(LoginActivity.this, TrackActivity.class);
startActivity(intent);
TrackManagerService trackManager = TrackManagerService.getInstance();
if (trackManager != null) {
trackManager.setLoginListener(null);
}
finish();
}
我希望这能帮助你 为什么要使用2次dialog.disease()代码>活动完成后,如何关闭对话框?请尝试添加以下代码
try {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setTitle(R.string.login_ok_title);
builder.setMessage(R.string.login_ok_text).setCancelable(false).setPositiveButton(R.string.ok, (dialog, id) ->
{
//dialog.dismiss(); //Remove this
Intent intent = new Intent(LoginActivity.this, TrackActivity.class);
startActivity(intent);
TrackManagerService trackManager = TrackManagerService.getInstance();
if (trackManager != null) {
trackManager.setLoginListener(null);
}
LoginActivity.this.finish();
//dialog.dismiss(); //Remove this
});
alert = builder.create();
alert.show();
} catch (Exception ex) {
ex.printStackTrace();
Intent intent = new Intent(LoginActivity.this, TrackActivity.class);
startActivity(intent);
TrackManagerService trackManager = TrackManagerService.getInstance();
if (trackManager != null) {
trackManager.setLoginListener(null);
}
finish();
}
我希望这能帮助你 启动另一个活动后不要关闭对话框。在开始另一项活动之前,请先将其关闭。这是否回答了您的问题?我确实检查了它,那是在我添加警报的时候;语句,但它一直在发生。不要在启动另一个活动后关闭对话框。在开始另一项活动之前,请先将其关闭。这是否回答了您的问题?我确实检查了它,那是在我添加警报的时候;声明,但它不断发生。是的,我以前做过,但它仍然给我这个问题。我改变了我的答案。请再试一次,我刚刚做了,但它仍然抛出此错误Activity com.example.tornado\u app.LoginActivity已泄漏窗口DecorView@aeec1d9[LoginActivity]最初添加于android.view.ViewRootImpl.(ViewRootImpl.java:627)的android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:389)在com.example.tornado\u app.LoginActivity$2.lambda$onLoginResult$4$LoginActivity$2(LoginActivity.java:160)
谢谢你,这很好,我尝试了重建和清理项目,然后再次运行。是的,我以前做过,但它仍然给我这个问题。我改变了答案。请再试一次,我刚刚做了,但它仍然抛出此错误Activity com.example.tornado\u app.LoginActivity已泄漏窗口DecorView@aeec1d9[LoginActivity]最初添加于android.view.ViewRootImpl.(ViewRootImpl.java:627)的android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:389)在com.example.tornado\u app.LoginActivity$2.lambda$onLoginResult$4$LoginActivity$2(LoginActivity.java:160)
谢谢你,这很好,我尝试了重建和清理项目,然后再次运行。你尝试过吗?是的,我尝试过,但没有成功。我希望在活动开始后将其关闭,也就是为什么我将其保持在startActivity()之下。@Ibrahim117您是否尝试删除对话框。对所有代码关闭()?可能是错误。您可以共享您的完整LoginActivity代码吗?给您,您是否尝试过此操作?是的,我尝试过,但它不起作用。我希望它在活动开始后关闭,即为什么我将其保持在startActivity()以下。@Ibrahim117是否尝试删除对话框。关闭所有代码?可能是错误,您可以共享完整的LoginActivity代码吗?给您,