Loading services/core/java/com/android/server/am/ActivityManagerService.java +10 −2 Original line number Diff line number Diff line Loading @@ -16523,7 +16523,7 @@ public final class ActivityManagerService extends ActivityManagerNative } if ((userInfo.flags&UserInfo.FLAG_INITIALIZED) == 0) { if (userId != 0) { if (userId != UserHandle.USER_OWNER) { Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE); intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); broadcastIntentLocked(null, null, intent, null, Loading Loading @@ -16552,6 +16552,8 @@ public final class ActivityManagerService extends ActivityManagerNative EventLogTags.writeAmSwitchUser(userId); getUserManagerLocked().userForeground(userId); sendUserSwitchBroadcastsLocked(oldUserId, userId); } else { mStackSupervisor.startBackgroundUserLocked(userId, uss); } if (needStart) { Loading Loading @@ -16727,7 +16729,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } void finishUserSwitch(UserStartedState uss) { void finishUserBoot(UserStartedState uss) { synchronized (this) { if (uss.mState == UserStartedState.STATE_BOOTING && mStartedUsers.get(uss.mHandle.getIdentifier()) == uss) { Loading @@ -16741,6 +16743,12 @@ public final class ActivityManagerService extends ActivityManagerNative android.Manifest.permission.RECEIVE_BOOT_COMPLETED, AppOpsManager.OP_NONE, true, false, MY_PID, Process.SYSTEM_UID, userId); } } } void finishUserSwitch(UserStartedState uss) { synchronized (this) { finishUserBoot(uss); startProfilesLocked(); services/core/java/com/android/server/am/ActivityStackSupervisor.java +26 −3 Original line number Diff line number Diff line Loading @@ -193,6 +193,9 @@ public final class ActivityStackSupervisor implements DisplayListener { /** Used on user changes */ final ArrayList<UserStartedState> mStartingUsers = new ArrayList<UserStartedState>(); /** Used to queue up any background users being started */ final ArrayList<UserStartedState> mStartingBackgroundUsers = new ArrayList<UserStartedState>(); /** Set to indicate whether to issue an onUserLeaving callback when a newly launched activity * is being brought in front of us. */ boolean mUserLeaving = false; Loading Loading @@ -1999,11 +2002,22 @@ public final class ActivityStackSupervisor implements DisplayListener { if (booting) { mService.finishBooting(); } else if (startingUsers != null) { } else { // Complete user switch if (startingUsers != null) { for (int i = 0; i < startingUsers.size(); i++) { mService.finishUserSwitch(startingUsers.get(i)); } } // Complete starting up of background users if (mStartingBackgroundUsers.size() > 0) { startingUsers = new ArrayList<UserStartedState>(mStartingBackgroundUsers); mStartingBackgroundUsers.clear(); for (int i = 0; i < startingUsers.size(); i++) { mService.finishUserBoot(startingUsers.get(i)); } } } mService.trimApplications(); //dump(); Loading Loading @@ -2507,6 +2521,15 @@ public final class ActivityStackSupervisor implements DisplayListener { return homeInFront; } /** * Add background users to send boot completed events to. * @param userId The user being started in the background * @param uss The state object for the user. */ public void startBackgroundUserLocked(int userId, UserStartedState uss) { mStartingBackgroundUsers.add(uss); } final ArrayList<ActivityRecord> processStoppingActivitiesLocked(boolean remove) { int N = mStoppingActivities.size(); if (N <= 0) return null; Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +10 −2 Original line number Diff line number Diff line Loading @@ -16523,7 +16523,7 @@ public final class ActivityManagerService extends ActivityManagerNative } if ((userInfo.flags&UserInfo.FLAG_INITIALIZED) == 0) { if (userId != 0) { if (userId != UserHandle.USER_OWNER) { Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE); intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); broadcastIntentLocked(null, null, intent, null, Loading Loading @@ -16552,6 +16552,8 @@ public final class ActivityManagerService extends ActivityManagerNative EventLogTags.writeAmSwitchUser(userId); getUserManagerLocked().userForeground(userId); sendUserSwitchBroadcastsLocked(oldUserId, userId); } else { mStackSupervisor.startBackgroundUserLocked(userId, uss); } if (needStart) { Loading Loading @@ -16727,7 +16729,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } void finishUserSwitch(UserStartedState uss) { void finishUserBoot(UserStartedState uss) { synchronized (this) { if (uss.mState == UserStartedState.STATE_BOOTING && mStartedUsers.get(uss.mHandle.getIdentifier()) == uss) { Loading @@ -16741,6 +16743,12 @@ public final class ActivityManagerService extends ActivityManagerNative android.Manifest.permission.RECEIVE_BOOT_COMPLETED, AppOpsManager.OP_NONE, true, false, MY_PID, Process.SYSTEM_UID, userId); } } } void finishUserSwitch(UserStartedState uss) { synchronized (this) { finishUserBoot(uss); startProfilesLocked();
services/core/java/com/android/server/am/ActivityStackSupervisor.java +26 −3 Original line number Diff line number Diff line Loading @@ -193,6 +193,9 @@ public final class ActivityStackSupervisor implements DisplayListener { /** Used on user changes */ final ArrayList<UserStartedState> mStartingUsers = new ArrayList<UserStartedState>(); /** Used to queue up any background users being started */ final ArrayList<UserStartedState> mStartingBackgroundUsers = new ArrayList<UserStartedState>(); /** Set to indicate whether to issue an onUserLeaving callback when a newly launched activity * is being brought in front of us. */ boolean mUserLeaving = false; Loading Loading @@ -1999,11 +2002,22 @@ public final class ActivityStackSupervisor implements DisplayListener { if (booting) { mService.finishBooting(); } else if (startingUsers != null) { } else { // Complete user switch if (startingUsers != null) { for (int i = 0; i < startingUsers.size(); i++) { mService.finishUserSwitch(startingUsers.get(i)); } } // Complete starting up of background users if (mStartingBackgroundUsers.size() > 0) { startingUsers = new ArrayList<UserStartedState>(mStartingBackgroundUsers); mStartingBackgroundUsers.clear(); for (int i = 0; i < startingUsers.size(); i++) { mService.finishUserBoot(startingUsers.get(i)); } } } mService.trimApplications(); //dump(); Loading Loading @@ -2507,6 +2521,15 @@ public final class ActivityStackSupervisor implements DisplayListener { return homeInFront; } /** * Add background users to send boot completed events to. * @param userId The user being started in the background * @param uss The state object for the user. */ public void startBackgroundUserLocked(int userId, UserStartedState uss) { mStartingBackgroundUsers.add(uss); } final ArrayList<ActivityRecord> processStoppingActivitiesLocked(boolean remove) { int N = mStoppingActivities.size(); if (N <= 0) return null; Loading