Merge "Register callbacks on background thread to avoid ANR" into main
diff --git a/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java b/src/com/android/settings/connecteddevice/fastpair/FastPairDevicePreferenceController.java
index a1c6d18..2df7d11 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.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 @@
 
     @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 @@
             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);
+    }
 }