From 4feb3260152b2ddbd4a96c43c09cd1ed3cf2d3fb Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 13 Jul 2015 14:42:43 -0700 Subject: Improve resource loading by ~3x Bug: 22392651 ColorStateLists were never cached because the lazy-create of the constant state had a typo. Resource caching in general was broken because ThemeKey did not clone the hash code, so all keys in the cache had a hashCode of 0 which did not match the real, uncloned ThemeKeys hash code so the binary search in ArrayMap based off of hash code was failing. Change-Id: I9df1628b226bfa797bed97875354c19bf64f41ad --- core/java/android/content/res/ColorStateList.java | 2 +- core/java/android/content/res/Resources.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'core/java/android/content/res') diff --git a/core/java/android/content/res/ColorStateList.java b/core/java/android/content/res/ColorStateList.java index 579634f..19921b5 100644 --- a/core/java/android/content/res/ColorStateList.java +++ b/core/java/android/content/res/ColorStateList.java @@ -603,7 +603,7 @@ public class ColorStateList implements Parcelable { * @hide only for resource preloading */ public ConstantState getConstantState() { - if (mFactory != null) { + if (mFactory == null) { mFactory = new ColorStateListFactory(this); } return mFactory; diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 9a99a46..731903c 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -1918,6 +1918,7 @@ public class Resources { other.mResId = mResId; other.mForce = mForce; other.mCount = mCount; + other.mHashCode = mHashCode; return other; } } -- cgit v1.1