From 8ae95aef56aea58e079c4eb5b372eb49c2895db0 Mon Sep 17 00:00:00 2001 From: Stevie Kideckel Date: Tue, 23 Nov 2021 17:26:26 +0000 Subject: [PATCH] Deprecate RemoteViews showNext/showPrevious Only idempotent actions should be used as RemoteViews can be reapplied frequently. Also, these actions don't work with partiallyUpdateAppWidget, which causes developer confusion and pain. Developers should use setDisplayedChild instead and maintain their own record of the current index. Test: annotation only, validated that things still built ok Fix: 197745933 Change-Id: I67a2615567a38dae90d693c89001adcaafba2a8e --- core/api/current.txt | 4 ++-- core/java/android/widget/RemoteViews.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index ea4097bb35787..9566eec5008f7 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -56102,8 +56102,8 @@ package android.widget { method public void setViewOutlinePreferredRadiusDimen(@IdRes int, @DimenRes int); method public void setViewPadding(@IdRes int, @Px int, @Px int, @Px int, @Px int); method public void setViewVisibility(@IdRes int, int); - method public void showNext(@IdRes int); - method public void showPrevious(@IdRes int); + method @Deprecated public void showNext(@IdRes int); + method @Deprecated public void showPrevious(@IdRes int); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final String EXTRA_CHECKED = "android.widget.extra.CHECKED"; diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 3d4d9eca6b16a..d8e7d118bd242 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -1510,6 +1510,12 @@ public class RemoteViews implements Parcelable, Filter { } } + /** + * @deprecated As RemoteViews may be reapplied frequently, it is preferable to call + * {@link #setDisplayedChild(int, int)} to ensure that the adapter index does not change + * unexpectedly. + */ + @Deprecated private final class ViewContentNavigation extends Action { final boolean mNext; @@ -4100,7 +4106,11 @@ public class RemoteViews implements Parcelable, Filter { * Equivalent to calling {@link AdapterViewAnimator#showNext()} * * @param viewId The id of the view on which to call {@link AdapterViewAnimator#showNext()} + * @deprecated As RemoteViews may be reapplied frequently, it is preferable to call + * {@link #setDisplayedChild(int, int)} to ensure that the adapter index does not change + * unexpectedly. */ + @Deprecated public void showNext(@IdRes int viewId) { addAction(new ViewContentNavigation(viewId, true /* next */)); } @@ -4109,7 +4119,11 @@ public class RemoteViews implements Parcelable, Filter { * Equivalent to calling {@link AdapterViewAnimator#showPrevious()} * * @param viewId The id of the view on which to call {@link AdapterViewAnimator#showPrevious()} + * @deprecated As RemoteViews may be reapplied frequently, it is preferable to call + * {@link #setDisplayedChild(int, int)} to ensure that the adapter index does not change + * unexpectedly. */ + @Deprecated public void showPrevious(@IdRes int viewId) { addAction(new ViewContentNavigation(viewId, false /* next */)); }