Geben Sie in einer Terminal-App unter Android Folgendes ein (Root-Zugriff erforderlich):
su
am stop-user USER_ID
ZB für einen Gastbenutzer ist es USER_ID
in meinem Gerät 11
so, dass der Befehl wäre am stop-user 11
.
am stop-user
verarbeitet keine Mehrfacheingaben, daher müssen Sie den Befehl für jeden sekundären Benutzer ausführen, den Sie anhalten möchten.
Dies unterscheidet sich etwas vom Neustart des Geräts. Wenn Sie die Verwendung überprüfen am
, sehen Sie,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Wie gesagt, es werden einfach alle Aktivitäten angehalten, die diesem Benutzerkonto zugeordnet sind. Wenn also ein expliziter Start oder Wechsel vorgesehen ist, wird Ihre Sitzung fortgesetzt, anstatt von vorne zu beginnen.
Eine Bestätigung, dass der Benutzer tatsächlich angehalten hat oder nicht ausgeführt wird, finden Sie in meiner Antwort unter Wie kann ich herausfinden, wie der Benutzername / die ID derzeit von ADB ausgeführt wird ?
Kurz pm list users
oder dumpsys activity
würde Ihnen sagen, ob der Benutzer ist RUNNING
oder SHUTDOWN
. Der letztere Befehl ist besser. Wenn die Benutzersitzung tatsächlich angehalten wird am stop-user
, würden Sie mState=SHUTDOWN
für diesen Benutzer sehen. Wenn der Benutzer jedoch seit dem Neustart nicht einmal aktiviert wurde, wird kein Eintrag angezeigt.
am stopuser 10
wurde nur derpm list users
Befehl als Benutzer angezeigt, der nicht ausgeführt wurde. Ich habeadb shell ps
nacham stop-user 10
und findenu10_axx
laufenden Prozesse. Um zu überprüfen, ob sie angehalten wurden, habe ich versucht, ein Shell-Skript in einem Terminal des 2. Benutzers auszuführen. Das Skript wiederholt jede Sekunde eine Echoanweisung (zeigt die Sekunde an). Nachdemam stop-user 10
ich dieses Skript mit dem Befehl gestartet, 5 Minuten gewartet und die zweite Benutzersitzung neu gestartet habe, kann ich sagen, dass das Skript nicht angehalten wird. Es lief die ganze Zeit.