В терминальном приложении на Android введите (требуется root-доступ):
su
am stop-user USER_ID
Например, для гостевого пользователя USER_ID
в моем устройстве есть 11
команда am stop-user 11
.
am stop-user
не обрабатывает множественный ввод, поэтому вы должны выполнить команду для каждого вторичного пользователя, которого вы хотите приостановить.
Это немного отличается от перезапуска устройства. Если вы проверите am
использование, вы увидите,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Как уже было сказано, он просто приостанавливает все действия, связанные с этой учетной записью пользователя, поэтому всякий раз, когда предоставляется явный запуск или переключение, сеанс возобновляется, а не начинается с нуля.
Для подтверждения того, что пользователь действительно сделал паузу или не работает, см. Мой ответ для Как узнать текущее имя пользователя / ID из ADB ?
Вкратце, pm list users
или dumpsys activity
скажу вам, является ли пользователь RUNNING
или SHUTDOWN
. Последняя команда лучше. Если пользовательский сеанс действительно остановлен am stop-user
, вы увидите mState=SHUTDOWN
этого пользователя. Однако, если пользователь не был активирован ни разу после перезагрузки, вы не увидите ни одной его записи.
am stopuser 10
показала только то,pm list users
что пользователь не работает. Я проверилadb shell ps
послеam stop-user 10
и могу найтиu10_axx
процессы запущены. Чтобы проверить, остановлены ли они, я попытался запустить сценарий оболочки в терминале 2-го пользователя. Скрипт повторяет оператор echo каждую секунду (отображая секунду). После запуска этого сценария, использованияam stop-user 10
команды, ожидания 5 минут и перезапуска второго сеанса пользователя, я могу сказать, что сценарий не остановлен. Это бежало в течение всего времени.