设备上有多个用户的会话注销?


10

有一个选项可以在用户之间切换,但是没有一个选项可以从活动的用户会话中注销。非活动用户(登录并关闭后)的后台应用程序和服务继续消耗电池电量。

我认为的唯一方法是重新启动设备,而不登录用户。

那么,所有者有什么方法可以强迫随后的不活动用户注销其会话?我可以通过拥有对所有者的超级用户访问权限android-5.0.2

Answers:


7

在Android上的终端应用中,输入(需要root访问权限):

su
am stop-user USER_ID

例如,对于来宾用户,它USER_ID在我的设备中是,11因此命令应为am stop-user 11

am stop-user 不会处理多个输入,因此您必须为要暂停的每个辅助用户执行命令。

这与重启设备有些不同。如果您查看am的用法,您会看到,

am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.

如前所述,它只是暂停与该用户帐户相关联的所有活动,因此,只要提供明确的启动或切换,您的会话就会恢复,而不是从头开始。

要确认用户确实已暂停或未在运行,请参阅我关于如何从ADB查找当前正在运行的用户名/ ID的答案。

简短地讲,pm list usersdumpsys activity会告诉您用户是RUNNING还是SHUTDOWN。后一个命令更好。如果确实终止了用户会话am stop-user,您将看到mState=SHUTDOWN该用户。但是,如果自重新启动以来一次都没有激活用户,则不会看到其任何条目。


就像我说的那样am stopuser 10,仅pm list users在用户未运行时显示命令。我检查adb shell psam stop-user 10,可以找到u10_axx正在运行的进程。为了检查它们是否停止,我尝试在第二个用户的终端上运行shell脚本。该脚本每秒循环一个echo语句(显示秒)。使用am stop-user 10命令启动此脚本后,等待5分钟并重新启动第二个用户会话,可以说该脚本未停止。它一直运行着。
巴拉特G

我用于在Android 5.0.2的第二个用户中安装应用(终端)的方法是通过adb install -r app.apk。不知道这是否是问题。
巴拉特·G

如果收到与您的评论有关的信息,我会及时更新。
Firelord

1
我已经在朋友的设备上检查了相同的命令,android-5.1.1并且按规定工作。我没有检查脚本部分,但是在发出时am stop-user 10,第二个用户的所有进程都被杀死,没有在命令中列出Settings > Apps或未在ps命令中列出。因此,这是一种方式,但是android-5.0.2当前该命令存在问题,或者我猜该功能在该版本中尚未实现。但是5.1有更多无法忍受的错误可供我切换。谢谢您:)
Bharat G
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.