From 606f8e79a210260a28b2629726740bf7e94c9f13 Mon Sep 17 00:00:00 2001 From: Tony Mak Date: Wed, 15 Feb 2017 18:40:03 +0000 Subject: [PATCH] Defer readSessionsLocked until system ready readSessionsLocked depend on DPMS, so defer it until all system service is started Fix: 34663223 Test: Manual 1. Try to install an app and reboot before it is installed (so the session is persisted in a file) 2. Observe that PackageInstallerService read the persisted session in onSystemReady and able to get the DPM instance. 3. Observe play can read the persisted session Change-Id: Ia14ed09db08fcf59189fa29293f0ac5066650942 --- .../com/android/server/pm/PackageInstallerService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index efd313237acf1..8b4ef56664515 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -221,6 +221,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub { new File(Environment.getDataSystemDirectory(), "install_sessions.xml")); mSessionsDir = new File(Environment.getDataSystemDirectory(), "install_sessions"); mSessionsDir.mkdirs(); + } + + public void systemReady() { + mAppOps = mContext.getSystemService(AppOpsManager.class); synchronized (mSessions) { readSessionsLocked(); @@ -245,10 +249,6 @@ public class PackageInstallerService extends IPackageInstaller.Stub { } } - public void systemReady() { - mAppOps = mContext.getSystemService(AppOpsManager.class); - } - private void reconcileStagesLocked(String volumeUuid, boolean isEphemeral) { final File stagingDir = buildStagingDir(volumeUuid, isEphemeral); final ArraySet unclaimedStages = newArraySet(