如何修复在Android中发生的泄漏窗口错误:com.android.internal.policy.PhoneWindow

5 浏览
0 Comments

如何修复在Android中发生的泄漏窗口错误:com.android.internal.policy.PhoneWindow

在我的应用程序中,我想显示对话框,为此我编写了以下代码。

但是当运行应用程序时,对话框没有显示出来,并在logCat中显示以下错误。

我的logCat错误:

android.view.WindowLeaked: Activity com.app.android.Activity.DetailPage.RegisterInAuctionActivity has leaked window com.android.internal.policy.PhoneWindow$DecorView{1e27b62 V.E...... R.....I. 0,0-0,0} that was originally added here

at android.view.ViewRootImpl.(ViewRootImpl.java:377)

at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:299)

at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:86)

at android.app.Dialog.show(Dialog.java:322)

at com.app.android.Activity.DetailPage.RegisterInAuctionActivity$2$1.onResponse(RegisterInAuctionActivity.java:372)

at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5530)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:733)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)

我的Java代码:

Call call2 = apIs.getDetainAuctions(detail.getId().toString(), jwtToken, "android");

call2.enqueue(new Callback() {

@Override

public void onResponse(Call call, final Response response) {

if (response.body() != null) {

if (response.body().getRes() != null) {

if (response.body().getRes().getAccount() != null) {

handler.postDelayed(new Runnable() {

@Override

public void run() {

footerFragment.update(response.body().getRes().getAccount().getBuyBid(), isUpdateInfo);

}

}, 200);

dialog = new Dialog(context);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setContentView(R.layout.important_note);

dialog.setCancelable(false);

LinearLayout closeDialog = dialog.findViewById(R.id.okPayFrag_submitOK);

closeDialog.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dialog.dismiss();

}

});

dialog.show();

}

}

}

}

@Override

public void onFailure(Call call, Throwable t) {

}

});

我该如何修复这个错误?

0