summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/DexOptHelper.java12
-rw-r--r--services/java/com/android/server/SystemServer.java8
2 files changed, 15 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java
index de37080d0255..d8bfa592ea95 100644
--- a/services/core/java/com/android/server/pm/DexOptHelper.java
+++ b/services/core/java/com/android/server/pm/DexOptHelper.java
@@ -40,8 +40,10 @@ import static dalvik.system.DexFile.isProfileGuidedCompilerFilter;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.AppGlobals;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.ResolveInfo;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.dex.ArtManager;
@@ -1019,7 +1021,15 @@ public final class DexOptHelper {
pm.getDexOptHelper().new DexoptDoneHandler());
LocalManagerRegistry.addManager(ArtManagerLocal.class, artManager);
- artManager.scheduleBackgroundDexoptJob();
+ // Schedule the background job when boot is complete. This decouples us from when
+ // JobSchedulerService is initialized.
+ systemContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ context.unregisterReceiver(this);
+ artManager.scheduleBackgroundDexoptJob();
+ }
+ }, new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
}
/**
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 271a3d3779b2..b117cae5c97b 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -1793,6 +1793,10 @@ public final class SystemServer implements Dumpable {
}
t.traceEnd();
+ t.traceBegin("ArtManagerLocal");
+ DexOptHelper.initializeArtManagerLocal(context, mPackageManagerService);
+ t.traceEnd();
+
t.traceBegin("UpdatePackagesIfNeeded");
try {
Watchdog.getInstance().pauseWatchingCurrentThread("dexopt");
@@ -2766,10 +2770,6 @@ public final class SystemServer implements Dumpable {
mSystemServiceManager.startService(PermissionPolicyService.class);
t.traceEnd();
- t.traceBegin("ArtManagerLocal");
- DexOptHelper.initializeArtManagerLocal(context, mPackageManagerService);
- t.traceEnd();
-
t.traceBegin("MakePackageManagerServiceReady");
mPackageManagerService.systemReady();
t.traceEnd();