OSDN Git Service

Save PackageDexUsage on PMS shutdown
authorCalin Juravle <calin@google.com>
Fri, 28 Jul 2017 23:13:35 +0000 (16:13 -0700)
committerAndreas Gampe <agampe@google.com>
Wed, 1 Nov 2017 20:07:34 +0000 (13:07 -0700)
This ensures that we persist the in memory data between restarts (makes
testing much easier).

(cherry picked from commit 14876bd21a4a4e7d78d36f910493269f14b2e905)

Bug: 64151900
Test: Manual, flash + restart + check the dex usage file

(cherry picked from commit 6ef7f0b8c6e72e849a220513425a9fd37804af90)

Merged-In: I7bd99fc03c3a40cbbf5d615886f857b5f84f438c
Change-Id: I7bd99fc03c3a40cbbf5d615886f857b5f84f438c

services/core/java/com/android/server/pm/PackageManagerService.java
services/core/java/com/android/server/pm/dex/DexManager.java
services/core/java/com/android/server/pm/dex/PackageDexUsage.java

index 6b8a415..8f4e8de 100644 (file)
@@ -9755,6 +9755,7 @@ public class PackageManagerService extends IPackageManager.Stub
     public void shutdown() {
         mPackageUsage.writeNow(mPackages);
         mCompilerStats.writeNow();
+        mDexManager.savePackageDexUsageNow();
     }
 
     @Override
index 3d2d483..b2851d7 100644 (file)
@@ -562,6 +562,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);
index f7dd174..be7f732 100644 (file)
@@ -178,8 +178,12 @@ public class PackageDexUsage extends AbstractStatsBase<Void> {
      * 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