Displays updater: force refresh on listener add
Refresh the preference every time the listener is added, not only for the first callback registration. This is needed because when switching fragments, the callback is unregistered by ConnectedDeviceGroupController, so no updates are received in the child fragments. This is handled differently by other device updaters. UsbConnectionBroadcastReceiver invokes onReceive() in register() to force a refresh. BluetoothDeviceUpdater requires the caller to do a force refresh explicitly. This CL goes with the latter pattern. Flag: com.android.settings.flags.display_topology_pane_in_display_list Test: open CD settings fragment, remove all displays, then go back to CD entry fragment Bug: b/398042811 Change-Id: Id139f227b1d59bde0174538b29b46fdd21ec0d24
This commit is contained in:
@@ -93,6 +93,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
if (mExternalDisplayUpdater != null) {
|
if (mExternalDisplayUpdater != null) {
|
||||||
mExternalDisplayUpdater.registerCallback();
|
mExternalDisplayUpdater.registerCallback();
|
||||||
|
mExternalDisplayUpdater.refreshPreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mBluetoothDeviceUpdater != null) {
|
if (mBluetoothDeviceUpdater != null) {
|
||||||
|
@@ -55,7 +55,7 @@ public class ExternalDisplayUpdater {
|
|||||||
private final DisplayListener mListener = new DisplayListener() {
|
private final DisplayListener mListener = new DisplayListener() {
|
||||||
@Override
|
@Override
|
||||||
public void update(int displayId) {
|
public void update(int displayId) {
|
||||||
scheduleUpdate();
|
refreshPreference();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -91,8 +91,6 @@ public class ExternalDisplayUpdater {
|
|||||||
.launch();
|
.launch();
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
scheduleUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -151,7 +149,10 @@ public class ExternalDisplayUpdater {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scheduleUpdate() {
|
/**
|
||||||
|
* Updates preference, possibly removing it entirely.
|
||||||
|
*/
|
||||||
|
public void refreshPreference() {
|
||||||
if (mInjector == null) {
|
if (mInjector == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user