diff options
author | Adam Powell <adamp@google.com> | 2011-09-23 11:05:25 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-23 11:05:25 -0700 |
commit | 5c267ecec6529a384e76a8b4a261b73aadaf1130 (patch) | |
tree | 7e363bca17ab9ef231e00f4f6a9d86d5ebef0738 /core/java | |
parent | e448f557f620ae30dcead7a4423059dfb7d70add (diff) | |
parent | 7db82acd8151684a886d4725ddf2790ef3a2f80e (diff) | |
download | frameworks_base-5c267ecec6529a384e76a8b4a261b73aadaf1130.zip frameworks_base-5c267ecec6529a384e76a8b4a261b73aadaf1130.tar.gz frameworks_base-5c267ecec6529a384e76a8b4a261b73aadaf1130.tar.bz2 |
Merge "Fix leaky view tags"
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/View.java | 41 |
1 files changed, 8 insertions, 33 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index f993160..46cda2d 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -81,7 +81,6 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Locale; -import java.util.WeakHashMap; import java.util.concurrent.CopyOnWriteArrayList; /** @@ -1497,12 +1496,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal /** * Map used to store views' tags. */ - private static WeakHashMap<View, SparseArray<Object>> sTags; - - /** - * Lock used to access sTags. - */ - private static final Object sTagsLock = new Object(); + private SparseArray<Object> mKeyedTags; /** * The next available accessiiblity id. @@ -12236,14 +12230,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * @see #getTag() */ public Object getTag(int key) { - SparseArray<Object> tags = null; - synchronized (sTagsLock) { - if (sTags != null) { - tags = sTags.get(this); - } - } - - if (tags != null) return tags.get(key); + if (mKeyedTags != null) return mKeyedTags.get(key); return null; } @@ -12276,7 +12263,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal + "resource id."); } - setTagInternal(this, key, tag); + setKeyedTag(this, key, tag); } /** @@ -12291,27 +12278,15 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal + "resource id."); } - setTagInternal(this, key, tag); + setKeyedTag(this, key, tag); } - private static void setTagInternal(View view, int key, Object tag) { - SparseArray<Object> tags = null; - synchronized (sTagsLock) { - if (sTags == null) { - sTags = new WeakHashMap<View, SparseArray<Object>>(); - } else { - tags = sTags.get(view); - } - } - - if (tags == null) { - tags = new SparseArray<Object>(2); - synchronized (sTagsLock) { - sTags.put(view, tags); - } + private void setKeyedTag(View view, int key, Object tag) { + if (mKeyedTags == null) { + mKeyedTags = new SparseArray<Object>(); } - tags.put(key, tag); + mKeyedTags.put(key, tag); } /** |