Em um aplicativo de terminal no Android, insira (requer acesso root):
su
am stop-user USER_ID
Por exemplo, para um usuário convidado, é USER_ID
no meu dispositivo 11
que o comando seria am stop-user 11
.
am stop-user
não processa várias entradas, então você deve executar o comando para todos os usuários secundários que deseja pausar.
Isso é um pouco diferente de reiniciar o dispositivo. Se você verificar am
o uso, verá,
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
Como dito, ele simplesmente interrompe todas as atividades associadas a essa conta de usuário, portanto, sempre que uma inicialização ou troca explícita for fornecida, sua sessão será retomada em vez de começar do zero.
Para confirmação de que o usuário realmente parou ou não está executando, consulte minha resposta para Como descobrir o nome de usuário / ID atualmente em execução no ADB ?
Resumidamente, pm list users
ou dumpsys activity
diria se o usuário é RUNNING
ou SHUTDOWN
. O último comando é melhor. Se a sessão do usuário for realmente interrompida am stop-user
, você procuraria mState=SHUTDOWN
por esse usuário. No entanto, se o usuário não tiver sido ativado nem uma vez desde a reinicialização, você não verá nenhuma entrada.
am stopuser 10
estava mostrando apenas opm list users
comando como usuário não executando. Eu verifiqueiadb shell ps
depoisam stop-user 10
e posso encontraru10_axx
processos em execução. Para verificar se eles foram interrompidos, tentei executar um shell script em um terminal no segundo usuário. O script faz um loop de uma declaração de eco a cada segundo (exibindo o segundo). Depois de iniciar esse script, usando oam stop-user 10
comando, aguardando 5 minutos e reiniciando a 2ª sessão do usuário, posso dizer que o script não foi interrompido. Funcionou o tempo todo.