android.view.WindowLeaked / Android Intent



当我运行以下代码时,我会收到以下错误消息:"020-11-07 18:45:26.737 20684-20684/co.user.example E/WindowManager:android.view.WindowLeaked:活动com.user.example.Pages.Dashboard.Home已泄漏窗口DecorView@14fe64f最初添加到此处的[Home]";但我的应用程序仍然可以正常运行。我该如何解决那个问题_

这些代码属于一个活动。

public void login(View v) {
if( !validateUserEmail() | !validatePassword()){
return;
}
UserInfo userInfo = new UserInfo(mail,password);
SendRequestToAPI.sendRequest(userInfo,Login.this);
}

这些代码属于一个名为SendRequestToAPI的类。

public static void showWarningAlert(final Context context, String title, 
String contentText, String confirmText){
SweetAlertDialog alertDialog = new 
SweetAlertDialog(context,SweetAlertDialog.WARNING_TYPE);
alertDialog.setTitle(title);
alertDialog.setContentText(contentText);
alertDialog.setConfirmText(confirmText);
alertDialog.setConfirmClickListener(new 
SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
Intent intent = new Intent(context, Login.class);
context.startActivity(intent);
((Activity)context).finish();
}
}).setCancelButton("Cancel", new 
SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.dismissWithAnimation();
}
})
.show();
}

当您有一个警报窗口,但活动已销毁或退出时,就会发生这种情况。。换句话说,如果您有一个警报窗口,并且由于代码中的某些逻辑,为您提供上下文的活动已经被破坏或停止。

确保无论何时您的活动被破坏,您的警报对话框也会被取消。。您可以在活动的destroy((方法和onStop方法((中编写此逻辑。。警报对话框只能在关联活动激活后立即存在并工作,而不会发生任何泄漏。

您还可以通过确保无论何时显示alertdialog,您的活动都不会停止或被破坏来实现其他方式。

实现您想要的任何方式,但onPause((和onDestroy((是关键。

当我向这个代码流添加if块时,我的错误得到了解决。

public void onClick(SweetAlertDialog 
sweetAlertDialog) {
if (sweetAlertDialog != null && 
sweetAlertDialog.isShowing()) {
sweetAlertDialog.dismiss();
}
Intent intent = new Intent(context, 
Login.class);
context.startActivity(intent);
((Activity)context).finish();
}

最新更新