From a9c9bf510682d23babdd7e66603b031ebafea61c Mon Sep 17 00:00:00 2001 From: liangweikang Date: Thu, 3 Nov 2016 16:12:08 +0800 Subject: [PATCH] fixed applyConfigurationToResourcesLocked WeakReference is null https://code.google.com/p/android/issues/detail?id=226956 Test: compile anr monkey test Signed-off-by: liangweikang --- core/java/android/app/ResourcesManager.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index c4673a3b0b4cd..744bd305a9cc5 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -793,7 +793,8 @@ public class ResourcesManager { for (int i = mResourceImpls.size() - 1; i >= 0; i--) { ResourcesKey key = mResourceImpls.keyAt(i); - ResourcesImpl r = mResourceImpls.valueAt(i).get(); + WeakReference weakImplRef = mResourceImpls.valueAt(i); + ResourcesImpl r = weakImplRef != null ? weakImplRef.get() : null; if (r != null) { if (DEBUG || DEBUG_CONFIGURATION) Slog.v(TAG, "Changing resources " + r + " config to: " + config); @@ -854,8 +855,9 @@ public class ResourcesManager { final int implCount = mResourceImpls.size(); for (int i = 0; i < implCount; i++) { - final ResourcesImpl impl = mResourceImpls.valueAt(i).get(); final ResourcesKey key = mResourceImpls.keyAt(i); + final WeakReference weakImplRef = mResourceImpls.valueAt(i); + final ResourcesImpl impl = weakImplRef != null ? weakImplRef.get() : null; if (impl != null && key.mResDir.equals(assetPath)) { if (!ArrayUtils.contains(key.mLibDirs, libAsset)) { final int newLibAssetCount = 1 +