Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b916acb authored by Sangyun Yun's avatar Sangyun Yun Committed by Android (Google) Code Review
Browse files

Merge "Change the resource cache key from context to package name." into main

parents 7a190e0b 611b380c
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1319,8 +1319,11 @@ public class SubscriptionManager {
    private final Context mContext;

    // Cache of Resource that has been created in getResourcesForSubId. Key is a Pair containing
    // the Context and subId.
    private static final Map<Pair<Context, Integer>, Resources> sResourcesCache =
    // the Package Name and subId. Applications can create new contexts from
    // {@link android.content.Context#createPackageContext} with the same resources for different
    // purposes. Therefore, Cache can be wasted for resources from different contexts in the same
    // package. Use the package name rather than the context itself as a key value of cache.
    private static final Map<Pair<String, Integer>, Resources> sResourcesCache =
            new ConcurrentHashMap<>();

    /**
@@ -2809,12 +2812,13 @@ public class SubscriptionManager {
            boolean useRootLocale) {
        // Check if resources for this context and subId already exist in the resource cache.
        // Resources that use the root locale are not cached.
        Pair<Context, Integer> cacheKey = null;
        Pair<String, Integer> cacheKey = null;
        if (isValidSubscriptionId(subId) && !useRootLocale) {
            cacheKey = Pair.create(context, subId);
            if (sResourcesCache.containsKey(cacheKey)) {
            cacheKey = Pair.create(context.getPackageName(), subId);
            Resources cached = sResourcesCache.get(cacheKey);
            if (cached != null) {
                // Cache hit. Use cached Resources.
                return sResourcesCache.get(cacheKey);
                return cached;
            }
        }