我有一个在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();
我已经尝试在onDestroy
、finish
和finishAffinity
方法中添加pendingDialog.dismiss()
,但没有结果。对话框并不总是显示,所以在这种情况下dismiss
方法可能无法正常工作?
导致此异常的原因是什么,我该如何解决?
谢谢!
经过多次试验,我终于找到了解决方案。
通过使用finishAffinity()
而不是finish()
关闭当前活动,问题消失了。