diff options
| author | 2018-08-20 23:08:45 +0000 | |
|---|---|---|
| committer | 2018-08-20 23:08:45 +0000 | |
| commit | e4e1b4fbec5cb1429a7b58ae57f075de7921735c (patch) | |
| tree | 9821a8bf9e9a327dc21bcde8b1458573f3305c07 | |
| parent | 664dde335c7f882d67ab367614bf72e08bc99302 (diff) | |
| parent | a6ab55dc113b4b6ca1a94ba9b256cca1a8986dfa (diff) | |
Merge changes I5610b42b,Ib7a52bd0 into pi-dev
* changes:
ResourceManager: Disable APK Assets cache for real.
ResourceManager: Disable APK Assets cache.
| -rw-r--r-- | core/java/android/app/ResourcesManager.java | 53 |
1 files changed, 35 insertions, 18 deletions
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index 30256b42e6a1..8d0ad33a143e 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -121,10 +121,13 @@ public class ResourcesManager { } } + private static final boolean ENABLE_APK_ASSETS_CACHE = false; + /** * The ApkAssets we are caching and intend to hold strong references to. */ - private final LruCache<ApkKey, ApkAssets> mLoadedApkAssets = new LruCache<>(3); + private final LruCache<ApkKey, ApkAssets> mLoadedApkAssets = + (ENABLE_APK_ASSETS_CACHE) ? new LruCache<>(3) : null; /** * The ApkAssets that are being referenced in the wild that we can reuse, even if they aren't @@ -310,9 +313,12 @@ public class ResourcesManager { private @NonNull ApkAssets loadApkAssets(String path, boolean sharedLib, boolean overlay) throws IOException { final ApkKey newKey = new ApkKey(path, sharedLib, overlay); - ApkAssets apkAssets = mLoadedApkAssets.get(newKey); - if (apkAssets != null) { - return apkAssets; + ApkAssets apkAssets = null; + if (mLoadedApkAssets != null) { + apkAssets = mLoadedApkAssets.get(newKey); + if (apkAssets != null) { + return apkAssets; + } } // Optimistically check if this ApkAssets exists somewhere else. @@ -320,7 +326,10 @@ public class ResourcesManager { if (apkAssetsRef != null) { apkAssets = apkAssetsRef.get(); if (apkAssets != null) { - mLoadedApkAssets.put(newKey, apkAssets); + if (mLoadedApkAssets != null) { + mLoadedApkAssets.put(newKey, apkAssets); + } + return apkAssets; } else { // Clean up the reference. @@ -335,7 +344,11 @@ public class ResourcesManager { } else { apkAssets = ApkAssets.loadFromPath(path, false /*system*/, sharedLib); } - mLoadedApkAssets.put(newKey, apkAssets); + + if (mLoadedApkAssets != null) { + mLoadedApkAssets.put(newKey, apkAssets); + } + mCachedApkAssets.put(newKey, new WeakReference<>(apkAssets)); return apkAssets; } @@ -434,18 +447,22 @@ public class ResourcesManager { pw.println("ResourcesManager:"); pw.increaseIndent(); - pw.print("cached apks: total="); - pw.print(mLoadedApkAssets.size()); - pw.print(" created="); - pw.print(mLoadedApkAssets.createCount()); - pw.print(" evicted="); - pw.print(mLoadedApkAssets.evictionCount()); - pw.print(" hit="); - pw.print(mLoadedApkAssets.hitCount()); - pw.print(" miss="); - pw.print(mLoadedApkAssets.missCount()); - pw.print(" max="); - pw.print(mLoadedApkAssets.maxSize()); + if (mLoadedApkAssets != null) { + pw.print("cached apks: total="); + pw.print(mLoadedApkAssets.size()); + pw.print(" created="); + pw.print(mLoadedApkAssets.createCount()); + pw.print(" evicted="); + pw.print(mLoadedApkAssets.evictionCount()); + pw.print(" hit="); + pw.print(mLoadedApkAssets.hitCount()); + pw.print(" miss="); + pw.print(mLoadedApkAssets.missCount()); + pw.print(" max="); + pw.print(mLoadedApkAssets.maxSize()); + } else { + pw.print("cached apks: 0 [cache disabled]"); + } pw.println(); pw.print("total apks: "); |