From a7d0d00f4a2535f11518d9e956246fdec3c131ce Mon Sep 17 00:00:00 2001 From: Yiyi Shen Date: Mon, 23 Oct 2023 15:51:54 +0800 Subject: [PATCH] Fix crash when showing the device not found dialog. If users click to pair a not foundable device and then close the Settings page, Settings will crash becasue dialog holder is closed. This CL is part of the fix. It set the context to null when the activity stops. Bug: 306548036 Test: atest Change-Id: If68e3e9cd62216ad83b2e5058f504fce35e36a06 --- .../FastPairDeviceGroupController.java | 2 ++ .../FastPairDevicePreferenceController.java | 3 +- .../fastpair/FastPairDeviceUpdater.java | 35 ++++++------------- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceGroupController.java b/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceGroupController.java index 8918f018625..52ad91c4f70 100644 --- a/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceGroupController.java @@ -82,6 +82,7 @@ public class FastPairDeviceGroupController extends BasePreferenceController @Override public void onStart(@NonNull LifecycleOwner owner) { if (mFastPairDeviceUpdater != null) { + mFastPairDeviceUpdater.setPreferenceContext(mContext); mFastPairDeviceUpdater.registerCallback(); } else { if (DEBUG) { @@ -94,6 +95,7 @@ public class FastPairDeviceGroupController extends BasePreferenceController @Override public void onStop(@NonNull LifecycleOwner owner) { if (mFastPairDeviceUpdater != null) { + mFastPairDeviceUpdater.setPreferenceContext(null); mFastPairDeviceUpdater.unregisterCallback(); } else { if (DEBUG) { diff --git a/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java b/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java index 76c9d00a463..a1c6d184814 100644 --- a/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java +++ b/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java @@ -91,6 +91,7 @@ public class FastPairDevicePreferenceController extends BasePreferenceController @Override public void onStart(@NonNull LifecycleOwner owner) { if (mFastPairDeviceUpdater != null) { + mFastPairDeviceUpdater.setPreferenceContext(mContext); mFastPairDeviceUpdater.registerCallback(); } else { if (DEBUG) { @@ -103,6 +104,7 @@ public class FastPairDevicePreferenceController extends BasePreferenceController @Override public void onStop(@NonNull LifecycleOwner owner) { if (mFastPairDeviceUpdater != null) { + mFastPairDeviceUpdater.setPreferenceContext(null); mFastPairDeviceUpdater.unregisterCallback(); } else { if (DEBUG) { @@ -118,7 +120,6 @@ public class FastPairDevicePreferenceController extends BasePreferenceController mPreferenceGroup = screen.findPreference(getPreferenceKey()); mSeeAllPreference = mPreferenceGroup.findPreference(KEY_SEE_ALL); updatePreferenceVisibility(); - if (isAvailable()) { final Context context = screen.getContext(); mFastPairDeviceUpdater.setPreferenceContext(context); diff --git a/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceUpdater.java b/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceUpdater.java index b975b9e9d7c..d1407aeeb61 100644 --- a/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceUpdater.java +++ b/src/com/android/settings/connecteddevice/fastpair/FastPairDeviceUpdater.java @@ -16,37 +16,24 @@ package com.android.settings.connecteddevice.fastpair; -import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.Context; /** - * Updates the Fast Pair devices. It notifies the upper level whether to add/remove the - * preference through {@link DevicePreferenceCallback} + * Updates the Fast Pair devices. It notifies the upper level whether to add/remove the preference + * through {@link DevicePreferenceCallback} */ public interface FastPairDeviceUpdater { - /** - * Registers the Fast Pair event callback and update the list - */ - default void registerCallback() { - } + /** Registers the Fast Pair event callback and update the list */ + default void registerCallback() {} - /** - * Unregisters the Fast Pair event callback - */ - default void unregisterCallback() { - } + /** Unregisters the Fast Pair event callback */ + default void unregisterCallback() {} - /** - * Forces to update the list of Fast Pair devices - */ - default void forceUpdate() { - } + /** Forces to update the list of Fast Pair devices */ + default void forceUpdate() {} - /** - * Sets the context to generate the {@link Preference}, so it could get the correct theme. - */ - default void setPreferenceContext(@NonNull Context preferenceContext) { - } + /** Sets the context to generate the {@link Preference}, so it could get the correct theme. */ + default void setPreferenceContext(@Nullable Context preferenceContext) {} } -