Dans une application de terminal sur Android, entrez (nécessite un accès root):
su
am stop-user USER_ID
Par exemple, pour un utilisateur invité, son USER_IDdans mon appareil est 11ainsi la commande serait am stop-user 11.
am stop-user ne traite pas les entrées multiples, vous devez donc exécuter la commande pour chaque utilisateur secondaire que vous souhaitez suspendre.
C'est un peu différent du redémarrage de l'appareil. Si vous vérifiez aml'utilisation que vous verriez,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Comme indiqué, cela met simplement en pause toutes les activités associées à ce compte d'utilisateur, donc chaque fois qu'un démarrage ou un changement explicite est fourni, votre session reprendra plutôt que de recommencer à zéro.
Pour confirmer que l'utilisateur a bien mis en pause ou n'est pas en cours d'exécution, consultez ma réponse pour savoir comment trouver le nom d'utilisateur / ID en cours d'exécution à partir d'ADB ?
En bref, pm list usersou dumpsys activityvous dirait si l'utilisateur est RUNNINGou SHUTDOWN. Cette dernière commande est meilleure. Si la session utilisateur est effectivement interrompue par am stop-user, vous verriez mState=SHUTDOWNpour cet utilisateur. Cependant, si l'utilisateur n'a pas été activé une seule fois depuis le redémarrage, vous ne verrez aucune de ses entrées.
am stopuser 10ne montrait que lapm list userscommande en tant qu'utilisateur ne fonctionnant pas. J'ai vérifiéadb shell psaprèsam stop-user 10et je peux trouver desu10_axxprocessus en cours d'exécution. Pour vérifier s'ils sont arrêtés, j'ai essayé d'exécuter un script shell dans un terminal sur le 2ème utilisateur. Le script boucle une instruction echo chaque seconde (affichant la seconde). Après avoir démarré ce script, utilisé laam stop-user 10commande, attendu 5min et relancé la 2ème session utilisateur, je peux dire que le script n'est pas arrêté. Il a fonctionné pendant tout le temps.