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);
+ }
}