summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jackal Guo <jackalguo@google.com> 2020-08-07 01:46:59 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-08-07 01:46:59 +0000
commit9331691079c010c66e6faaa8dd9081700ce1e135 (patch)
tree1eb8f8c0ffda666a0dd7ea5c2e01aa205226f363
parent25b0b6c7577cf3804f1fe456adad1483dd351a52 (diff)
parentdd01ec611bdc08c1f5837c0cd35a3cebab1aed21 (diff)
Merge "Remove orphaned cached result"
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 77df2830abe4..a874f612e106 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -10351,6 +10351,7 @@ public class PackageManagerService extends IPackageManager.Stub
mInstaller.rmPackageDir(codePath.getAbsolutePath());
if (codePathParent.getName().startsWith(RANDOM_DIR_PREFIX)) {
mInstaller.rmPackageDir(codePathParent.getAbsolutePath());
+ removeCachedResult(codePathParent);
}
} catch (InstallerException e) {
Slog.w(TAG, "Failed to remove code path", e);
@@ -10360,6 +10361,16 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
+ private void removeCachedResult(@NonNull File codePath) {
+ if (mCacheDir == null) {
+ return;
+ }
+
+ final PackageCacher cacher = new PackageCacher(mCacheDir);
+ // Find and delete the cached result belong to the given codePath.
+ cacher.cleanCachedResult(codePath);
+ }
+
private int[] resolveUserIds(int userId) {
return (userId == UserHandle.USER_ALL) ? mUserManager.getUserIds() : new int[] { userId };
}