ในแอปเทอร์มินัลบน Android ให้ป้อน (ต้องมีการเข้าถึงรูท):
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.
ตามที่กล่าวไว้มันจะหยุดกิจกรรมทั้งหมดที่เกี่ยวข้องกับบัญชีผู้ใช้นั้นชั่วคราวดังนั้นเมื่อใดก็ตามที่มีการเริ่มต้นหรือเปลี่ยนอย่างชัดเจนให้เซสชันของคุณจะทำงานต่อแทนที่จะเริ่มจากศูนย์
สำหรับการยืนยันว่าผู้ใช้หยุดทำงานชั่วคราวหรือไม่ทำงานให้ดูคำตอบของฉันสำหรับวิธีการค้นหาชื่อผู้ใช้ / ID จาก ADB ในปัจจุบัน ?
สั้น ๆ , pm list users
หรือdumpsys activity
จะบอกคุณได้ว่าผู้ใช้หรือRUNNING
SHUTDOWN
คำสั่งหลังดีกว่า หากมีการหยุดเซสชันผู้ใช้am stop-user
คุณจะเห็นmState=SHUTDOWN
ผู้ใช้รายนั้น อย่างไรก็ตามหากผู้ใช้ไม่ได้เปิดใช้งานแม้แต่ครั้งเดียวหลังจากรีบูตคุณจะไม่เห็นรายการใด ๆ
am stopuser 10
ก็แค่แสดงpm list users
คำสั่งขณะที่ผู้ใช้ไม่ได้ทำงาน ฉันตรวจสอบadb shell ps
หลังจากam stop-user 10
และสามารถค้นหาu10_axx
กระบวนการทำงาน เพื่อตรวจสอบว่าพวกเขาหยุดทำงานหรือไม่ฉันลองใช้เชลล์สคริปต์ในเทอร์มินัลกับผู้ใช้คนที่สอง สคริปต์วนรอบคำสั่ง echo ทุกวินาที (แสดงวินาที) หลังจากเริ่มต้นสคริปต์นี้โดยใช้am stop-user 10
คำสั่งรอ 5 นาทีและเริ่มเซสชันผู้ใช้ที่สองอีกครั้งฉันสามารถพูดได้ว่าสคริปต์นั้นไม่ได้หยุด มันวิ่งตลอดเวลา