From e487b00157c77cb665ae3a44f006d660f7417f50 Mon Sep 17 00:00:00 2001 From: hughchen Date: Wed, 13 Nov 2019 11:55:32 +0800 Subject: [PATCH] Don't use Lambda when register callback This CL before, the lambda callback is different it cause callback didn't unregister. If you re-enter bluetooth detail page many times, onDeviceAttributesChanged() will be called many times cause UI not smooth. This CL remove the lambda callback and show the UI when device connected. Fixes: 141583252 Test: Manual Change-Id: Icd3e84b2d461d9b949f080269dfa2bb5b5d5cb73 --- .../bluetooth/AdvancedBluetoothDetailsHeaderController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java index e245c22eb96..2bc55924bad 100644 --- a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java +++ b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java @@ -112,7 +112,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont if (!isAvailable()) { return; } - mCachedDevice.registerCallback(this::onDeviceAttributesChanged); + mCachedDevice.registerCallback(this); mBluetoothAdapter.addOnMetadataChangedListener(mCachedDevice.getDevice(), mContext.getMainExecutor(), mMetadataListener); } @@ -122,7 +122,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont if (!isAvailable()) { return; } - mCachedDevice.unregisterCallback(this::onDeviceAttributesChanged); + mCachedDevice.unregisterCallback(this); mBluetoothAdapter.removeOnMetadataChangedListener(mCachedDevice.getDevice(), mMetadataListener); } @@ -153,7 +153,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont final TextView summary = mLayoutPreference.findViewById(R.id.entity_header_summary); summary.setText(mCachedDevice.getConnectionSummary(true /* shortSummary */)); - if (!mCachedDevice.isConnected()) { + if (!mCachedDevice.isConnected() || mCachedDevice.isBusy()) { updateDisconnectLayout(); return; }