Don't allow showing an activity if user is stopping or shutting down.
BUG:29264996 Change-Id: I9fc97c5dc37e6d5656b82b277954b5963eb345c4
This commit is contained in:
@@ -3023,8 +3023,9 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
||||
|
||||
/** Checks whether the activity should be shown for current user. */
|
||||
boolean okToShowLocked(ActivityRecord r) {
|
||||
return r != null && (isCurrentProfileLocked(r.userId)
|
||||
|| (r.info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0);
|
||||
return r != null && ((r.info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0
|
||||
|| (isCurrentProfileLocked(r.userId)
|
||||
&& !mService.mUserController.isUserStoppingOrShuttingDownLocked(r.userId)));
|
||||
}
|
||||
|
||||
final ArrayList<ActivityRecord> processStoppingActivitiesLocked(boolean remove) {
|
||||
|
||||
@@ -1335,6 +1335,15 @@ final class UserController {
|
||||
return mStartedUserArray;
|
||||
}
|
||||
|
||||
boolean isUserStoppingOrShuttingDownLocked(int userId) {
|
||||
UserState state = getStartedUserStateLocked(userId);
|
||||
if (state == null) {
|
||||
return false;
|
||||
}
|
||||
return state.state == UserState.STATE_STOPPING
|
||||
|| state.state == UserState.STATE_SHUTDOWN;
|
||||
}
|
||||
|
||||
boolean isUserRunningLocked(int userId, int flags) {
|
||||
UserState state = getStartedUserStateLocked(userId);
|
||||
if (state == null) {
|
||||
|
||||
@@ -732,9 +732,9 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
long identity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
if (enableQuietMode) {
|
||||
ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null);
|
||||
LocalServices.getService(ActivityManagerInternal.class)
|
||||
.killForegroundAppsForUser(userHandle);
|
||||
ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null);
|
||||
} else {
|
||||
ActivityManagerNative.getDefault().startUserInBackground(userHandle);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user