diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index c58cde006759f..7adea6a880be0 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -127,6 +127,14 @@ public class Resources { */ private final ArrayList> mThemeRefs = new ArrayList<>(); + /** + * To avoid leaking WeakReferences to garbage collected Themes on the + * mThemeRefs list, we flush the list of stale references any time the + * mThemeRefNextFlushSize is reached. + */ + private static final int MIN_THEME_REFS_FLUSH_SIZE = 32; + private int mThemeRefsNextFlushSize = MIN_THEME_REFS_FLUSH_SIZE; + /** * Returns the most appropriate default theme for the specified target SDK version. *