summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author liangweikang <liangweikang@xiaomi.com> 2016-11-03 16:12:08 +0800
committer weikang liang <liangweikang900911@gmail.com> 2016-11-09 01:40:33 +0000
commita9c9bf510682d23babdd7e66603b031ebafea61c (patch)
treec11cb9ceb26d85b7832a1e9c0f94234a40da8383
parent605df82c9ec50a46a33f2d9bb75782900881439d (diff)
fixed applyConfigurationToResourcesLocked WeakReference is null
https://code.google.com/p/android/issues/detail?id=226956 Test: compile anr monkey test Signed-off-by: liangweikang <liangweikang900911@gmail.com>
-rw-r--r--core/java/android/app/ResourcesManager.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index c4673a3b0b4c..744bd305a9cc 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<ResourcesImpl> 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<ResourcesImpl> 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 +