diff options
-rw-r--r-- | services/core/java/com/android/server/pm/DexOptHelper.java | 12 | ||||
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 8 |
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(); |