In un'app terminale su Android, immettere (richiede l'accesso root):
su
am stop-user USER_ID
Ad esempio, per un utente Ospite, è USER_ID
nel mio dispositivo è 11
quindi il comando sarebbe am stop-user 11
.
am stop-user
non elabora più input, quindi devi eseguire il comando per ogni utente secondario che desideri mettere in pausa.
Questo è leggermente diverso dal riavvio del dispositivo. Se controlli am
l'uso che vedresti,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Come detto, interrompe semplicemente tutte le attività associate a quell'account utente, quindi ogni volta che viene fornito un avvio o uno switch esplicito la sessione riprenderà anziché iniziare da zero.
Per la conferma che l'utente ha effettivamente messo in pausa o non è in esecuzione, vedere la mia risposta per Come scoprire il nome utente / ID attualmente in esecuzione da ADB ?
In breve, pm list users
o dumpsys activity
ti dirò se l'utente è RUNNING
o SHUTDOWN
. Quest'ultimo comando è migliore. Se la sessione utente viene effettivamente interrotta am stop-user
, vedresti mState=SHUTDOWN
quell'utente. Tuttavia, se l'utente non è stato attivato nemmeno una volta dal riavvio, non vedresti nessuna delle sue voci.
am stopuser 10
mostrava solo ilpm list users
comando come utente non in esecuzione. Ho controllatoadb shell ps
dopoam stop-user 10
e posso trovare iu10_axx
processi in esecuzione. Per verificare se sono stati arrestati, ho provato a eseguire uno script di shell in un terminale sul secondo utente. Lo script esegue un ciclo un'istruzione echo ogni secondo (visualizzato secondo). Dopo aver avviato questo script, utilizzando ilam stop-user 10
comando, aspettando 5 minuti e riavviando la seconda sessione utente, posso dire che lo script non viene arrestato. Funzionò per tutto il tempo.