活动已泄露在创建警报对话框时注册的 IntentReceiver AutoNightModeManager



我有一个在onCreate方法上创建了AlertDialog的活动。

当活动被销毁时,我得到这个异常:

E/ActivityThread: Activity com.materight.turkdroid.ui.activities.LoginActivity has leaked IntentReceiver androidx.appcompat.app.AppCompatDelegateImpl$AutoNightModeManager$1@18c886c that was originally registered here. Are you missing a call to unregisterReceiver()?
android.app.IntentReceiverLeaked: Activity com.materight.turkdroid.ui.activities.LoginActivity has leaked IntentReceiver androidx.appcompat.app.AppCompatDelegateImpl$AutoNightModeManager$1@18c886c that was originally registered here. Are you missing a call to unregisterReceiver()?
at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:1429)
at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1210)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1476)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1449)
...
at com.materight.turkdroid.ui.activities.LoginActivity.onCreate(LoginActivity.java:74)
...

引发错误的line 74是创建对话框的位置:

pendingDialog = new MaterialAlertDialogBuilder(this)
.setCancelable(false)
.setTitle(R.string.pending_purchase_title)
.setMessage(R.string.pending_purchase_content)
.setPositiveButton(R.string.close, (d, which) -> finishAffinity())
.create();

我已经尝试在onDestroyfinishfinishAffinity方法中添加pendingDialog.dismiss(),但没有结果。对话框并不总是显示,所以在这种情况下dismiss方法可能无法正常工作?

导致此异常的原因是什么,我该如何解决?

谢谢!

经过多次试验,我终于找到了解决方案。

通过使用finishAffinity()而不是finish()关闭当前活动,问题消失了。

最新更新