From 14876bd21a4a4e7d78d36f910493269f14b2e905 Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Fri, 28 Jul 2017 16:13:35 -0700 Subject: [PATCH] Save PackageDexUsage on PMS shutdown This ensures that we persist the in memory data between restarts (makes testing much easier). Bug: 64151900 Test: Manual, flash + restart + check the dex usage file (cherry picked from commit 6ef7f0b8c6e72e849a220513425a9fd37804af90) Change-Id: I7bd99fc03c3a40cbbf5d615886f857b5f84f438c --- .../java/com/android/server/pm/PackageManagerService.java | 1 + .../core/java/com/android/server/pm/dex/DexManager.java | 7 +++++++ .../java/com/android/server/pm/dex/PackageDexUsage.java | 8 ++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index ebd8ef00b0d54..aead98b900463 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -10004,6 +10004,7 @@ public class PackageManagerService extends IPackageManager.Stub public void shutdown() { mPackageUsage.writeNow(mPackages); mCompilerStats.writeNow(); + mDexManager.savePackageDexUsageNow(); } @Override diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java index 79e02b5399de8..947e01c49c592 100644 --- a/services/core/java/com/android/server/pm/dex/DexManager.java +++ b/services/core/java/com/android/server/pm/dex/DexManager.java @@ -592,6 +592,13 @@ public class DexManager { return existingValue == null ? newValue : existingValue; } + /** + * Saves the in-memory package dex usage to disk right away. + */ + public void savePackageDexUsageNow() { + mPackageDexUsage.writeNow(); + } + public static class RegisterDexModuleResult { public RegisterDexModuleResult() { this(false, null); diff --git a/services/core/java/com/android/server/pm/dex/PackageDexUsage.java b/services/core/java/com/android/server/pm/dex/PackageDexUsage.java index 8819aa66ed6ba..6ee26d32f0e01 100644 --- a/services/core/java/com/android/server/pm/dex/PackageDexUsage.java +++ b/services/core/java/com/android/server/pm/dex/PackageDexUsage.java @@ -198,8 +198,12 @@ public class PackageDexUsage extends AbstractStatsBase { * Convenience method for async writes which does not force the user to pass a useless * (Void) null. */ - public void maybeWriteAsync() { - maybeWriteAsync((Void) null); + /*package*/ void maybeWriteAsync() { + maybeWriteAsync(null); + } + + /*package*/ void writeNow() { + writeInternal(null); } @Override