W aplikacji terminalowej na Androida wpisz (wymaga dostępu do konta root):
su
am stop-user USER_ID
Np. Dla użytkownika gościa jest on USER_ID
w moim urządzeniu 11
tak, że polecenie byłoby am stop-user 11
.
am stop-user
nie przetwarza wielu danych wejściowych, dlatego musisz wykonać polecenie dla każdego dodatkowego użytkownika, którego chcesz wstrzymać.
To trochę różni się od ponownego uruchomienia urządzenia. Jeśli zaznaczysz am
użycie, zobaczysz,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Jak powiedziano, po prostu wstrzymuje wszystkie działania powiązane z tym kontem użytkownika, więc za każdym razem, gdy zapewnione jest wyraźne rozpoczęcie lub zmiana sesji, sesja zostanie wznowiona, a nie od zera.
Aby potwierdzić, że użytkownik rzeczywiście się zatrzymał lub nie działa, zobacz moją odpowiedź na temat Jak znaleźć aktualnie uruchomioną nazwę / identyfikator użytkownika z ADB ?
W skrócie, pm list users
lub dumpsys activity
powiedziałbym, czy użytkownik jest RUNNING
lub SHUTDOWN
. To drugie polecenie jest lepsze. Jeśli sesja użytkownika rzeczywiście zostanie zatrzymana am stop-user
, zobaczysz mState=SHUTDOWN
tego użytkownika. Jeśli jednak użytkownik nie został aktywowany ani razu od momentu ponownego uruchomienia, nie zobaczysz żadnego z jego wpisów.
am stopuser 10
wyświetlałpm list users
polecenie tylko jako użytkownik nie działa. Sprawdziłemadb shell ps
późniejam stop-user 10
i mogę znaleźću10_axx
uruchomione procesy. Aby sprawdzić, czy są zatrzymane, próbowałem uruchomić skrypt powłoki w terminalu na drugim użytkowniku. Skrypt zapętla instrukcję echa co sekundę (wyświetlając sekundę). Po uruchomieniu tego skryptu, użyciuam stop-user 10
polecenia, odczekaniu 5 minut i ponownym uruchomieniu drugiej sesji użytkownika, mogę powiedzieć, że skrypt nie został zatrzymany. Działał przez cały czas.