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_IDin meinem Gerät 11so, 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 usersoder dumpsys activitywürde Ihnen sagen, ob der Benutzer ist RUNNINGoder SHUTDOWN. Der letztere Befehl ist besser. Wenn die Benutzersitzung tatsächlich angehalten wird am stop-user, würden Sie mState=SHUTDOWNfür diesen Benutzer sehen. Wenn der Benutzer jedoch seit dem Neustart nicht einmal aktiviert wurde, wird kein Eintrag angezeigt.
am stopuser 10wurde nur derpm list usersBefehl als Benutzer angezeigt, der nicht ausgeführt wurde. Ich habeadb shell psnacham stop-user 10und findenu10_axxlaufenden 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 10ich 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.