From c8f6ecc265656cdf68d2010a4e04666017c3b907 Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Tue, 30 Jun 2015 11:16:37 +0100 Subject: Fix memory leak in setActionProvider() - framework edition Caused by ActionMenuItem's SubUiVisibilityListener not being nulled when it is replaced via setActionProvider(). BUG: 22189734 Change-Id: Id4deaa05cd5554ca7bdf969a592e4812e39dcb75 --- core/java/android/view/ActionProvider.java | 8 ++++++++ core/java/com/android/internal/view/menu/MenuItemImpl.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ActionProvider.java b/core/java/android/view/ActionProvider.java index c3aafde833a5..752240f4578d 100644 --- a/core/java/android/view/ActionProvider.java +++ b/core/java/android/view/ActionProvider.java @@ -236,6 +236,14 @@ public abstract class ActionProvider { mVisibilityListener = listener; } + /** + * @hide + */ + public void reset() { + mVisibilityListener = null; + mSubUiVisibilityListener = null; + } + /** * @hide Internal use only */ diff --git a/core/java/com/android/internal/view/menu/MenuItemImpl.java b/core/java/com/android/internal/view/menu/MenuItemImpl.java index 3b1f20d86503..08d4e8616795 100644 --- a/core/java/com/android/internal/view/menu/MenuItemImpl.java +++ b/core/java/com/android/internal/view/menu/MenuItemImpl.java @@ -593,7 +593,7 @@ public final class MenuItemImpl implements MenuItem { public MenuItem setActionProvider(ActionProvider actionProvider) { if (mActionProvider != null) { - mActionProvider.setVisibilityListener(null); + mActionProvider.reset(); } mActionView = null; mActionProvider = actionProvider; -- cgit v1.2.3-59-g8ed1b