Merge "Fix anr issue on connected devices settings"

This commit is contained in:
TreeHugger Robot
2020-11-24 09:56:11 +00:00
committed by Android (Google) Code Review

View File

@@ -44,6 +44,7 @@ import com.android.settings.widget.GearPreference;
import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.utils.ThreadUtils;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
@@ -175,6 +176,18 @@ public final class BluetoothDevicePreference extends GearPreference {
} }
private void onPreferenceAttributesChanged() { private void onPreferenceAttributesChanged() {
ThreadUtils.postOnBackgroundThread(() -> {
final Pair<Drawable, String> pair =
BluetoothUtils.getBtRainbowDrawableWithDescription(getContext(), mCachedDevice);
ThreadUtils.postOnMainThread(() -> {
if (pair.first != null) {
setIcon(pair.first);
contentDescription = pair.second;
}
});
});
/* /*
* The preference framework takes care of making sure the value has * The preference framework takes care of making sure the value has
* changed before proceeding. It will also call notifyChanged() if * changed before proceeding. It will also call notifyChanged() if
@@ -184,13 +197,6 @@ public final class BluetoothDevicePreference extends GearPreference {
// Null check is done at the framework // Null check is done at the framework
setSummary(mCachedDevice.getConnectionSummary()); setSummary(mCachedDevice.getConnectionSummary());
final Pair<Drawable, String> pair =
BluetoothUtils.getBtRainbowDrawableWithDescription(getContext(), mCachedDevice);
if (pair.first != null) {
setIcon(pair.first);
contentDescription = pair.second;
}
// Used to gray out the item // Used to gray out the item
setEnabled(!mCachedDevice.isBusy()); setEnabled(!mCachedDevice.isBusy());