Fix crash when trying to dismiss dialog

Calling Dialog.dismiss() requires a safe condition, including that
dialog is shown,and activity is neither finishing nor destroying, so we
should add a precondition check here to avoid crash.

Bug: 248562161
Test: manual and atest
Change-Id: I87de2cd05680815d4bb4e80ac1e0d6e2e4a685f7
This commit is contained in:
Shen Lin
2022-09-24 01:13:30 +08:00
committed by Fabian Kozynski
parent 5cb3c55774
commit 3588cb06ba

View File

@@ -18,6 +18,7 @@ package com.android.systemui.controls.ui
import android.annotation.AnyThread
import android.annotation.MainThread
import android.app.Activity
import android.app.AlertDialog
import android.app.Dialog
import android.app.PendingIntent
@@ -85,8 +86,16 @@ class ControlActionCoordinatorImpl @Inject constructor(
}
override fun closeDialogs() {
dialog?.dismiss()
dialog = null
val isActivityFinishing =
(activityContext as? Activity)?.let { it.isFinishing || it.isDestroyed }
if (isActivityFinishing == true) {
dialog = null
return
}
if (dialog?.isShowing == true) {
dialog?.dismiss()
dialog = null
}
}
override fun toggle(cvh: ControlViewHolder, templateId: String, isChecked: Boolean) {