Fix labels loading regression
DisplayResolveInfo#getDisplayLabel() internally loads the display label if it is missing and a ResolveInfoPresentationGetter is set for the instance. Current view binding logic unconditionally calls getDisplayLabel method which could trigger label resolution on the main thread and a consequently scheduled label loading asynchronous task a no-op. Test: manual functionality testing Test: introduce artificial into LoadLabelTask, observe labels lading asynchronously and does not reload when scrolling through a long list of options. Test: atest FrameworksCoreTests:ResolverActivityTest Bug: 245934835 Change-Id: I392d6c8424617820bde58887d92ae99bc39c5b7b
This commit is contained in:
@@ -647,15 +647,16 @@ public class ResolverListAdapter extends BaseAdapter {
|
||||
|
||||
if (info instanceof DisplayResolveInfo) {
|
||||
DisplayResolveInfo dri = (DisplayResolveInfo) info;
|
||||
boolean hasLabel = dri.hasDisplayLabel();
|
||||
holder.bindLabel(
|
||||
dri.getDisplayLabel(),
|
||||
dri.getExtendedInfo(),
|
||||
hasLabel && alwaysShowSubLabel());
|
||||
holder.bindIcon(info);
|
||||
if (!hasLabel) {
|
||||
if (dri.hasDisplayLabel()) {
|
||||
holder.bindLabel(
|
||||
dri.getDisplayLabel(),
|
||||
dri.getExtendedInfo(),
|
||||
alwaysShowSubLabel());
|
||||
} else {
|
||||
holder.bindLabel("", "", false);
|
||||
loadLabel(dri);
|
||||
}
|
||||
holder.bindIcon(info);
|
||||
if (!dri.hasDisplayIcon()) {
|
||||
loadIcon(dri);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user