¿Cerrar sesión en el dispositivo con múltiples usuarios?

10

Hay una opción para cambiar entre usuarios, pero no hay una opción para cerrar sesión en una sesión de usuario activa. Las aplicaciones y servicios en segundo plano para usuarios inactivos (una vez que inician sesión y se desconectan) continúan funcionando agotando la batería.

Creo que la única forma es reiniciar el dispositivo y no iniciar sesión con el usuario.

Entonces, ¿hay alguna forma de que el propietario pueda obligar a los usuarios inactivos posteriores a cerrar sesión en su sesión? Tengo acceso de superusuario al propietario con android-5.0.2.

Bharat G
fuente

Respuestas:

7

En una aplicación de terminal en Android, ingrese (requiere acceso de root):

su
am stop-user USER_ID

Por ejemplo, para un usuario invitado, está USER_IDen mi dispositivo, 11por lo que el comando sería am stop-user 11.

am stop-user no procesa múltiples entradas, por lo que debe ejecutar el comando para cada usuario secundario que desee pausar.

Esto es un poco diferente de reiniciar el dispositivo. Si marca amel uso que vería,

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 se dijo, simplemente detiene todas las actividades asociadas a esa cuenta de usuario, por lo que cada vez que se proporciona un inicio o cambio explícito, su sesión se reanudará en lugar de comenzar desde cero.

Para confirmar que el usuario realmente se detuvo o no se está ejecutando, consulte mi respuesta para ¿Cómo averiguar el nombre / ID de usuario actualmente en ejecución desde ADB ?

Brevemente, pm list userso dumpsys activityle diría si el usuario es RUNNINGo SHUTDOWN. El último comando es mejor. Si la sesión de usuario se detiene am stop-user, verás mState=SHUTDOWNpara ese usuario. Sin embargo, si el usuario no se ha activado ni una sola vez desde el reinicio, no verá ninguna de sus entradas.

Señor del fuego
fuente
como dije am stopuser 10, solo mostraba el pm list userscomando cuando el usuario no se estaba ejecutando. Lo comprobé adb shell psdespués am stop-user 10y puedo encontrar u10_axxprocesos en ejecución. Para verificar si están detenidos, intenté ejecutar un script de shell en una terminal en el segundo usuario. La secuencia de comandos repite una declaración de eco cada segundo (muestra el segundo). Después de comenzar este script, usando el am stop-user 10comando, esperando 5 minutos y reiniciando la segunda sesión de usuario, puedo decir que el script no se detiene. Funcionó todo el tiempo.
Bharat G
El método que utilicé para instalar aplicaciones (terminal) en el segundo usuario de Android 5.0.2 es por adb install -r app.apk. No sé si ese es el problema.
Bharat G
Te actualizaré si obtengo algo relevante para tus comentarios.
Señor del Fuego
1
He comprobado el mismo comando en el dispositivo de un amigo android-5.1.1y funcionó como se indica. No he revisado la parte del script, pero al emitir am stop-user 10, todos los procesos del segundo usuario fueron eliminados y no figuran en el comando Settings > Appsni con él ps. Entonces, es el camino, pero android-5.0.2actualmente está defectuoso con este comando, o tal funcionalidad no está implementada a partir de esa versión, supongo. Pero 5.1 tiene más errores intolerables para que pueda cambiar todavía. Gracias :)
Bharat G