In un'app terminale su Android, immettere (richiede l'accesso root):
su
am stop-user USER_ID
Ad esempio, per un utente Ospite, è USER_IDnel mio dispositivo è 11quindi 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 aml'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 userso dumpsys activityti dirò se l'utente è RUNNINGo SHUTDOWN. Quest'ultimo comando è migliore. Se la sessione utente viene effettivamente interrotta am stop-user, vedresti mState=SHUTDOWNquell'utente. Tuttavia, se l'utente non è stato attivato nemmeno una volta dal riavvio, non vedresti nessuna delle sue voci.
am stopuser 10mostrava solo ilpm list userscomando come utente non in esecuzione. Ho controllatoadb shell psdopoam stop-user 10e posso trovare iu10_axxprocessi 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 10comando, aspettando 5 minuti e riavviando la seconda sessione utente, posso dire che lo script non viene arrestato. Funzionò per tutto il tempo.