summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorChris Banes <chrisbanes@google.com>2015-06-30 11:16:37 +0100
committerChris Banes <chrisbanes@google.com>2015-06-30 11:17:57 +0100
commitc8f6ecc265656cdf68d2010a4e04666017c3b907 (patch)
tree6c6a902ec4c705c7bf4e4f5b441e229eecbd20ab /core/java
parentf62f4c94a36f5c2f7ad3c70316dc585ea3fd721a (diff)
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
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/ActionProvider.java8
-rw-r--r--core/java/com/android/internal/view/menu/MenuItemImpl.java2
2 files changed, 9 insertions, 1 deletions
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
@@ -237,6 +237,14 @@ public abstract class ActionProvider {
}
/**
+ * @hide
+ */
+ public void reset() {
+ mVisibilityListener = null;
+ mSubUiVisibilityListener = null;
+ }
+
+ /**
* @hide Internal use only
*/
public interface SubUiVisibilityListener {
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;