summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-10-14 23:01:58 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-10-14 23:01:58 +0000
commitdead70a0a0387583d60ad83a56ab750c73d73b96 (patch)
treeb6db44e7c004e30832fa2c8e1af20b46fc4ebb74
parent794318432f8867e540e828f939492bf83b681344 (diff)
parent02c7c4c32f2274164515136b7ca934194ebdce49 (diff)
Merge "Lock on ResourcesManager when cleaning references"
-rw-r--r--core/java/android/app/ResourcesManager.java29
1 files changed, 16 insertions, 13 deletions
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 9e6054c715d6..68ab89cfbd01 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -884,21 +884,24 @@ public class ResourcesManager {
* @param activityToken optional token to clean up Activity resources
*/
private void cleanupReferences(IBinder activityToken) {
- if (activityToken != null) {
- ActivityResources activityResources = mActivityResourceReferences.get(activityToken);
- if (activityResources != null) {
- ArrayUtils.unstableRemoveIf(activityResources.activityResources,
- sEmptyReferencePredicate);
+ synchronized (this) {
+ if (activityToken != null) {
+ ActivityResources activityResources = mActivityResourceReferences.get(
+ activityToken);
+ if (activityResources != null) {
+ ArrayUtils.unstableRemoveIf(activityResources.activityResources,
+ sEmptyReferencePredicate);
+ }
+ } else {
+ ArrayUtils.unstableRemoveIf(mResourceReferences, sEmptyReferencePredicate);
}
- } else {
- ArrayUtils.unstableRemoveIf(mResourceReferences, sEmptyReferencePredicate);
- }
- for (int index = mResourcesWithLoaders.size() - 1; index >= 0; index--) {
- ResourcesWithLoaders resourcesWithLoaders = mResourcesWithLoaders.get(index);
- Resources resources = resourcesWithLoaders.resources();
- if (resources == null) {
- mResourcesWithLoaders.remove(index);
+ for (int index = mResourcesWithLoaders.size() - 1; index >= 0; index--) {
+ ResourcesWithLoaders resourcesWithLoaders = mResourcesWithLoaders.get(index);
+ Resources resources = resourcesWithLoaders.resources();
+ if (resources == null) {
+ mResourcesWithLoaders.remove(index);
+ }
}
}
}