From 06397516751abc91475b9efd177d48d999f06879 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 22 Aug 2019 16:32:21 -0700 Subject: [PATCH] Don't send HOME intent twice when booting from non-system user. When Automotive boots, CarServiceHelperService "restarts" the system user in the background, so it can be unlocked. Consequently, some boot tasks will be executed twice (triggered from UserController.startUser() and ActivityManager.systemReady()). Test: manual verification Bug: 139502237 Merged-In: Idd8beedf1ea034b47b9756b91404c5a043965c23 Change-Id: Idd8beedf1ea034b47b9756b91404c5a043965c23 --- .../com/android/server/am/ActivityManagerService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 2ddc72596e435..d442ea99c7bd3 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -9047,7 +9047,13 @@ public class ActivityManagerService extends IActivityManager.Stub throw e.rethrowAsRuntimeException(); } } - mAtmInternal.startHomeOnAllDisplays(currentUserId, "systemReady"); + // On Automotive, at this point the system user has already been started and unlocked, + // and some of the tasks we do here have already been done. So skip those in that case. + final boolean bootingSystemUser = currentUserId == UserHandle.USER_SYSTEM; + + if (bootingSystemUser) { + mAtmInternal.startHomeOnAllDisplays(currentUserId, "systemReady"); + } mAtmInternal.showSystemReadyErrorDialogsIfNeeded();