summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-09-23 11:05:25 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-09-23 11:05:25 -0700
commit5c267ecec6529a384e76a8b4a261b73aadaf1130 (patch)
tree7e363bca17ab9ef231e00f4f6a9d86d5ebef0738 /core/java
parente448f557f620ae30dcead7a4423059dfb7d70add (diff)
parent7db82acd8151684a886d4725ddf2790ef3a2f80e (diff)
downloadframeworks_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.java41
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);
}
/**