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_IDw moim urządzeniu 11tak, ż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 amuż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 userslub dumpsys activitypowiedziałbym, czy użytkownik jest RUNNINGlub SHUTDOWN. To drugie polecenie jest lepsze. Jeśli sesja użytkownika rzeczywiście zostanie zatrzymana am stop-user, zobaczysz mState=SHUTDOWNtego 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 10wyświetlałpm list userspolecenie tylko jako użytkownik nie działa. Sprawdziłemadb shell pspóźniejam stop-user 10i mogę znaleźću10_axxuruchomione 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 10polecenia, odczekaniu 5 minut i ponownym uruchomieniu drugiej sesji użytkownika, mogę powiedzieć, że skrypt nie został zatrzymany. Działał przez cały czas.