From 944abc5a8995f0ca980aec25b53552e8c1e4f9fd Mon Sep 17 00:00:00 2001 From: Sihua Ma Date: Tue, 23 May 2023 21:41:16 +0000 Subject: [PATCH] Set only one remote adapter for RemoteViews Previously, it is possible to have two different kinds of adapters in the RemoteViews from partial updates. This could cause some unexpected behaviors and performance issues. This change overwrites previous remote adapters when there is a partial update to the RemoteViews. Test: Presubmit Bug: 245950570 Change-Id: I3761f52fbe77db2efa302225086314587565fdf9 --- core/java/android/widget/RemoteViews.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 34e6e49d390f4..9261233400b21 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -232,6 +232,7 @@ public class RemoteViews implements Parcelable, Filter { private static final int NIGHT_MODE_REFLECTION_ACTION_TAG = 30; private static final int SET_REMOTE_COLLECTION_ITEMS_ADAPTER_TAG = 31; private static final int ATTRIBUTE_REFLECTION_ACTION_TAG = 32; + private static final int SET_REMOTE_ADAPTER_TAG = 33; /** @hide **/ @IntDef(prefix = "MARGIN_", value = { @@ -955,6 +956,11 @@ public class RemoteViews implements Parcelable, Filter { return SET_REMOTE_VIEW_ADAPTER_LIST_TAG; } + @Override + public String getUniqueKey() { + return (SET_REMOTE_ADAPTER_TAG + "_" + viewId); + } + int viewTypeCount; ArrayList list; } @@ -1077,6 +1083,11 @@ public class RemoteViews implements Parcelable, Filter { public int getActionTag() { return SET_REMOTE_COLLECTION_ITEMS_ADAPTER_TAG; } + + @Override + public String getUniqueKey() { + return (SET_REMOTE_ADAPTER_TAG + "_" + viewId); + } } private class SetRemoteViewsAdapterIntent extends Action {