En una aplicación de terminal en Android, ingrese (requiere acceso de root):
su
am stop-user USER_ID
Por ejemplo, para un usuario invitado, está USER_ID
en mi dispositivo, 11
por lo que el comando sería am stop-user 11
.
am stop-user
no procesa múltiples entradas, por lo que debe ejecutar el comando para cada usuario secundario que desee pausar.
Esto es un poco diferente de reiniciar el dispositivo. Si marca am
el uso que vería,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Como se dijo, simplemente detiene todas las actividades asociadas a esa cuenta de usuario, por lo que cada vez que se proporciona un inicio o cambio explícito, su sesión se reanudará en lugar de comenzar desde cero.
Para confirmar que el usuario realmente se detuvo o no se está ejecutando, consulte mi respuesta para ¿Cómo averiguar el nombre / ID de usuario actualmente en ejecución desde ADB ?
Brevemente, pm list users
o dumpsys activity
le diría si el usuario es RUNNING
o SHUTDOWN
. El último comando es mejor. Si la sesión de usuario se detiene am stop-user
, verás mState=SHUTDOWN
para ese usuario. Sin embargo, si el usuario no se ha activado ni una sola vez desde el reinicio, no verá ninguna de sus entradas.
am stopuser 10
, solo mostraba elpm list users
comando cuando el usuario no se estaba ejecutando. Lo comprobéadb shell ps
despuésam stop-user 10
y puedo encontraru10_axx
procesos en ejecución. Para verificar si están detenidos, intenté ejecutar un script de shell en una terminal en el segundo usuario. La secuencia de comandos repite una declaración de eco cada segundo (muestra el segundo). Después de comenzar este script, usando elam stop-user 10
comando, esperando 5 minutos y reiniciando la segunda sesión de usuario, puedo decir que el script no se detiene. Funcionó todo el tiempo.