[Connected devices page] Move the refresh logic to main thread.
As the caller of adding or removing devices may not be performing on background thread, sync problem could occur. So here we make sure all updates to UI happens on the main thread. Test: atest: com.android.settings.connecteddevice.PreviouslyConnectedDevicePreferenceControllerTest Bug: 365044575 Flag: EXEMPT bugfix Change-Id: I5b697acb7cf7469fe3bbff33b820b4e9f4c5104f
This commit is contained in:
@@ -170,34 +170,36 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
||||
|
||||
/** Sort the preferenceGroup by most recently used. */
|
||||
public void updatePreferenceGroup() {
|
||||
mPreferenceGroup.removeAll();
|
||||
if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
|
||||
// Bluetooth is supported
|
||||
int order = 0;
|
||||
for (BluetoothDevice device : mBluetoothAdapter.getMostRecentlyConnectedDevices()) {
|
||||
Preference preference = mDevicePreferenceMap.getOrDefault(device, null);
|
||||
if (preference != null) {
|
||||
Log.d(TAG, "Adding preference with order " + order + " when there are "
|
||||
+ mPreferenceGroup.getPreferenceCount());
|
||||
mContext.getMainExecutor().execute(() -> {
|
||||
mPreferenceGroup.removeAll();
|
||||
if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
|
||||
// Bluetooth is supported
|
||||
int order = 0;
|
||||
for (BluetoothDevice device : mBluetoothAdapter.getMostRecentlyConnectedDevices()) {
|
||||
Preference preference = mDevicePreferenceMap.getOrDefault(device, null);
|
||||
if (preference != null) {
|
||||
Log.d(TAG, "Adding preference with order " + order + " when there are "
|
||||
+ mPreferenceGroup.getPreferenceCount());
|
||||
preference.setOrder(order);
|
||||
mPreferenceGroup.addPreference(preference);
|
||||
order += 1;
|
||||
}
|
||||
if (order == MAX_DEVICE_NUM) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (Preference preference : mDockDevicesList) {
|
||||
if (order == MAX_DEVICE_NUM) {
|
||||
break;
|
||||
}
|
||||
preference.setOrder(order);
|
||||
mPreferenceGroup.addPreference(preference);
|
||||
order += 1;
|
||||
}
|
||||
if (order == MAX_DEVICE_NUM) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (Preference preference : mDockDevicesList) {
|
||||
if (order == MAX_DEVICE_NUM) {
|
||||
break;
|
||||
}
|
||||
preference.setOrder(order);
|
||||
mPreferenceGroup.addPreference(preference);
|
||||
order += 1;
|
||||
}
|
||||
}
|
||||
mPreferenceGroup.addPreference(mSeeAllPreference);
|
||||
updatePreferenceVisibility();
|
||||
mPreferenceGroup.addPreference(mSeeAllPreference);
|
||||
updatePreferenceVisibility();
|
||||
});
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
Reference in New Issue
Block a user