diff options
| -rw-r--r-- | services/java/com/android/server/SystemServer.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 2a6b0294a031..6ba4330f3916 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -342,6 +342,7 @@ public final class SystemServer { private static final String START_SENSOR_SERVICE = "StartSensorService"; private static final String START_HIDL_SERVICES = "StartHidlServices"; + private static final String START_BLOB_STORE_SERVICE = "startBlobStoreManagerService"; private static final String SYSPROP_START_COUNT = "sys.system_server.start_count"; private static final String SYSPROP_START_ELAPSED = "sys.system_server.start_elapsed"; @@ -349,6 +350,7 @@ public final class SystemServer { private Future<?> mSensorServiceStart; private Future<?> mZygotePreload; + private Future<?> mBlobStoreServiceStart; /** * Start the sensor service. This is a blocking call and can take time. @@ -1795,6 +1797,13 @@ public final class SystemServer { t.traceEnd(); } + mBlobStoreServiceStart = SystemServerInitThreadPool.submit(() -> { + final TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog(); + traceLog.traceBegin(START_BLOB_STORE_SERVICE); + mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS); + traceLog.traceEnd(); + }, START_BLOB_STORE_SERVICE); + // Dreams (interactive idle-time views, a/k/a screen savers, and doze mode) t.traceBegin("StartDreamManager"); mSystemServiceManager.startService(DreamManagerService.class); @@ -2039,10 +2048,6 @@ public final class SystemServer { mSystemServiceManager.startService(ClipboardService.class); t.traceEnd(); - t.traceBegin("StartBlobStoreManagerService"); - mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS); - t.traceEnd(); - t.traceBegin("AppServiceManager"); mSystemServiceManager.startService(AppBindingService.Lifecycle.class); t.traceEnd(); @@ -2160,6 +2165,9 @@ public final class SystemServer { mSystemServiceManager.startService(APP_SEARCH_MANAGER_SERVICE_CLASS); t.traceEnd(); + ConcurrentUtils.waitForFutureNoInterrupt(mBlobStoreServiceStart, + START_BLOB_STORE_SERVICE); + // These are needed to propagate to the runnable below. final NetworkManagementService networkManagementF = networkManagement; final NetworkStatsService networkStatsF = networkStats; |