Loading core/java/android/widget/ArrayAdapter.java +21 −2 Original line number Diff line number Diff line Loading @@ -128,6 +128,12 @@ public class ArrayAdapter<T> extends BaseAdapter implements Filterable, ThemedSp /** Layout inflater used for {@link #getDropDownView(int, View, ViewGroup)}. */ private LayoutInflater mDropDownInflater; private static final boolean sBoostCpuLoadFlag = android.widget.flags.Flags.boostCpuLoadForLongTextRendering(); /** The threshold at which to boost cpu work load for long text rendering. */ private static final int BOOST_CPU_TEXT_LENGTH_THRESHOLD = 500; /** * Constructor * Loading Loading @@ -448,11 +454,24 @@ public class ArrayAdapter<T> extends BaseAdapter implements Filterable, ThemedSp } final T item = getItem(position); int textLength; CharSequence textContent; if (item instanceof CharSequence) { text.setText((CharSequence) item); textLength = ((CharSequence) item).length(); textContent = (CharSequence) item; } else { text.setText(item.toString()); } textLength = item.toString() == null ? 0 : item.toString().length(); textContent = item.toString(); } // Send a hint to boost the renderer when processing text content rendering takes time. // (e.g. text rendering in minikin may take 2 ~ 4 ms when the text length > 500 during // calculating text bounds) if (sBoostCpuLoadFlag && parent.isAttachedToWindow() && textLength > BOOST_CPU_TEXT_LENGTH_THRESHOLD) { parent.getViewRootImpl().notifyRendererOfExpensiveFrame( "ADPF_SendHint: Expensive text rendering"); } text.setText(textContent); return view; } Loading core/java/android/widget/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "boost_cpu_load_for_long_text_rendering" namespace: "text" description: "Use ADPF APIs to boost cpu when processing long text layout" bug: "380088697" metadata { purpose: PURPOSE_BUGFIX } } Loading
core/java/android/widget/ArrayAdapter.java +21 −2 Original line number Diff line number Diff line Loading @@ -128,6 +128,12 @@ public class ArrayAdapter<T> extends BaseAdapter implements Filterable, ThemedSp /** Layout inflater used for {@link #getDropDownView(int, View, ViewGroup)}. */ private LayoutInflater mDropDownInflater; private static final boolean sBoostCpuLoadFlag = android.widget.flags.Flags.boostCpuLoadForLongTextRendering(); /** The threshold at which to boost cpu work load for long text rendering. */ private static final int BOOST_CPU_TEXT_LENGTH_THRESHOLD = 500; /** * Constructor * Loading Loading @@ -448,11 +454,24 @@ public class ArrayAdapter<T> extends BaseAdapter implements Filterable, ThemedSp } final T item = getItem(position); int textLength; CharSequence textContent; if (item instanceof CharSequence) { text.setText((CharSequence) item); textLength = ((CharSequence) item).length(); textContent = (CharSequence) item; } else { text.setText(item.toString()); } textLength = item.toString() == null ? 0 : item.toString().length(); textContent = item.toString(); } // Send a hint to boost the renderer when processing text content rendering takes time. // (e.g. text rendering in minikin may take 2 ~ 4 ms when the text length > 500 during // calculating text bounds) if (sBoostCpuLoadFlag && parent.isAttachedToWindow() && textLength > BOOST_CPU_TEXT_LENGTH_THRESHOLD) { parent.getViewRootImpl().notifyRendererOfExpensiveFrame( "ADPF_SendHint: Expensive text rendering"); } text.setText(textContent); return view; } Loading
core/java/android/widget/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "boost_cpu_load_for_long_text_rendering" namespace: "text" description: "Use ADPF APIs to boost cpu when processing long text layout" bug: "380088697" metadata { purpose: PURPOSE_BUGFIX } }