From 23601a670d4ff41a9f4a3ce076ac0377c648f87b Mon Sep 17 00:00:00 2001 From: Yiyi Shen Date: Tue, 27 Aug 2024 13:40:00 +0800 Subject: [PATCH] Register callbacks on background thread to avoid ANR Fix: 360798156 Test: atest Flag: EXEMPT small fix Change-Id: Ia40bbe33952fa7ea2b951c04cf47b4a05f641e26 --- .../FastPairDevicePreferenceController.java | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java b/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java index a1c6d184814..2df7d11788a 100644 --- a/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java +++ b/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java @@ -36,6 +36,7 @@ import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.core.BasePreferenceController; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.Collections; @@ -90,28 +91,12 @@ public class FastPairDevicePreferenceController extends BasePreferenceController @Override public void onStart(@NonNull LifecycleOwner owner) { - if (mFastPairDeviceUpdater != null) { - mFastPairDeviceUpdater.setPreferenceContext(mContext); - mFastPairDeviceUpdater.registerCallback(); - } else { - if (DEBUG) { - Log.d(TAG, "Callback register: Fast Pair device updater is null. Ignore."); - } - } - mContext.registerReceiver(mReceiver, mIntentFilter, Context.RECEIVER_EXPORTED_UNAUDITED); + var unused = ThreadUtils.postOnBackgroundThread(() -> registerCallbacks()); } @Override public void onStop(@NonNull LifecycleOwner owner) { - if (mFastPairDeviceUpdater != null) { - mFastPairDeviceUpdater.setPreferenceContext(null); - mFastPairDeviceUpdater.unregisterCallback(); - } else { - if (DEBUG) { - Log.d(TAG, "Callback unregister: Fast Pair device updater is null. Ignore."); - } - } - mContext.unregisterReceiver(mReceiver); + var unused = ThreadUtils.postOnBackgroundThread(() -> unregisterCallbacks()); } @Override @@ -208,4 +193,28 @@ public class FastPairDevicePreferenceController extends BasePreferenceController mSeeAllPreference.setVisible(false); } } + + private void registerCallbacks() { + if (mFastPairDeviceUpdater != null) { + mFastPairDeviceUpdater.setPreferenceContext(mContext); + mFastPairDeviceUpdater.registerCallback(); + } else { + if (DEBUG) { + Log.d(TAG, "Callback register: Fast Pair device updater is null. Ignore."); + } + } + mContext.registerReceiver(mReceiver, mIntentFilter, Context.RECEIVER_EXPORTED_UNAUDITED); + } + + private void unregisterCallbacks() { + if (mFastPairDeviceUpdater != null) { + mFastPairDeviceUpdater.setPreferenceContext(null); + mFastPairDeviceUpdater.unregisterCallback(); + } else { + if (DEBUG) { + Log.d(TAG, "Callback unregister: Fast Pair device updater is null. Ignore."); + } + } + mContext.unregisterReceiver(mReceiver); + } }