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:
@@ -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
|
||||
@@ -119,8 +120,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) {
|
||||
|
||||
Reference in New Issue
Block a user