diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt index c964b9654955f..81004ef8dc372 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt @@ -158,6 +158,10 @@ open class ControlsActivity @Inject constructor( override fun onDestroy() { super.onDestroy() + unregisterReceiver() + } + + protected open fun unregisterReceiver() { broadcastDispatcher.unregisterReceiver(broadcastReceiver) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/TestableControlsActivity.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/TestableControlsActivity.kt index f0b473210630a..d2fe68ad8e1af 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/TestableControlsActivity.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/TestableControlsActivity.kt @@ -22,6 +22,8 @@ import com.android.systemui.controls.settings.ControlsSettingsDialogManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.statusbar.policy.KeyguardStateController +// IMPORTANT: onDestroy may be called outside of bounds of the test. That means that the mocks +// may have been nulled before onDestroy happens. class TestableControlsActivity( uiController: ControlsUiController, broadcastDispatcher: BroadcastDispatcher, @@ -37,4 +39,8 @@ class TestableControlsActivity( featureFlags, controlsSettingsDialogManager, keyguardStateController - ) + ) { + override fun unregisterReceiver() { + // Do nothing. This will be called in `onDestroy` + } +}