Loading core/java/android/app/ActivityManagerInternal.java +5 −0 Original line number Diff line number Diff line Loading @@ -139,4 +139,9 @@ public abstract class ActivityManagerInternal { * minimized state. */ public abstract void notifyDockedStackMinimizedChanged(boolean minimized); /** * Kill foreground apps from the specified user. */ public abstract void killForegroundAppsForUser(int userHandle); } services/core/java/com/android/server/am/ActivityManagerService.java +30 −0 Original line number Diff line number Diff line Loading @@ -20985,6 +20985,36 @@ public final class ActivityManagerService extends ActivityManagerNative mStackSupervisor.setDockedStackMinimized(minimized); } } @Override public void killForegroundAppsForUser(int userHandle) { synchronized (ActivityManagerService.this) { final ArrayList<ProcessRecord> procs = new ArrayList<>(); final int NP = mProcessNames.getMap().size(); for (int ip = 0; ip < NP; ip++) { final SparseArray<ProcessRecord> apps = mProcessNames.getMap().valueAt(ip); final int NA = apps.size(); for (int ia = 0; ia < NA; ia++) { final ProcessRecord app = apps.valueAt(ia); if (app.persistent) { // We don't kill persistent processes. continue; } if (app.removed) { procs.add(app); } else if (app.userId == userHandle && app.foregroundActivities) { app.removed = true; procs.add(app); } } } final int N = procs.size(); for (int i = 0; i < N; i++) { removeProcessLocked(procs.get(i), false, true, "kill all fg"); } } } } private final class SleepTokenImpl extends SleepToken { services/core/java/com/android/server/pm/UserManagerService.java +2 −0 Original line number Diff line number Diff line Loading @@ -667,6 +667,8 @@ public class UserManagerService extends IUserManager.Stub { long identity = Binder.clearCallingIdentity(); try { if (enableQuietMode) { LocalServices.getService(ActivityManagerInternal.class) .killForegroundAppsForUser(userHandle); ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null); } else { ActivityManagerNative.getDefault().startUserInBackground(userHandle); Loading Loading
core/java/android/app/ActivityManagerInternal.java +5 −0 Original line number Diff line number Diff line Loading @@ -139,4 +139,9 @@ public abstract class ActivityManagerInternal { * minimized state. */ public abstract void notifyDockedStackMinimizedChanged(boolean minimized); /** * Kill foreground apps from the specified user. */ public abstract void killForegroundAppsForUser(int userHandle); }
services/core/java/com/android/server/am/ActivityManagerService.java +30 −0 Original line number Diff line number Diff line Loading @@ -20985,6 +20985,36 @@ public final class ActivityManagerService extends ActivityManagerNative mStackSupervisor.setDockedStackMinimized(minimized); } } @Override public void killForegroundAppsForUser(int userHandle) { synchronized (ActivityManagerService.this) { final ArrayList<ProcessRecord> procs = new ArrayList<>(); final int NP = mProcessNames.getMap().size(); for (int ip = 0; ip < NP; ip++) { final SparseArray<ProcessRecord> apps = mProcessNames.getMap().valueAt(ip); final int NA = apps.size(); for (int ia = 0; ia < NA; ia++) { final ProcessRecord app = apps.valueAt(ia); if (app.persistent) { // We don't kill persistent processes. continue; } if (app.removed) { procs.add(app); } else if (app.userId == userHandle && app.foregroundActivities) { app.removed = true; procs.add(app); } } } final int N = procs.size(); for (int i = 0; i < N; i++) { removeProcessLocked(procs.get(i), false, true, "kill all fg"); } } } } private final class SleepTokenImpl extends SleepToken {
services/core/java/com/android/server/pm/UserManagerService.java +2 −0 Original line number Diff line number Diff line Loading @@ -667,6 +667,8 @@ public class UserManagerService extends IUserManager.Stub { long identity = Binder.clearCallingIdentity(); try { if (enableQuietMode) { LocalServices.getService(ActivityManagerInternal.class) .killForegroundAppsForUser(userHandle); ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null); } else { ActivityManagerNative.getDefault().startUserInBackground(userHandle); Loading