diff options
| author | 2020-08-07 01:46:59 +0000 | |
|---|---|---|
| committer | 2020-08-07 01:46:59 +0000 | |
| commit | 9331691079c010c66e6faaa8dd9081700ce1e135 (patch) | |
| tree | 1eb8f8c0ffda666a0dd7ea5c2e01aa205226f363 | |
| parent | 25b0b6c7577cf3804f1fe456adad1483dd351a52 (diff) | |
| parent | dd01ec611bdc08c1f5837c0cd35a3cebab1aed21 (diff) | |
Merge "Remove orphaned cached result"
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 11 |
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 }; } |