ปาร์ตี้ช่วยเหลือ

ผู้ใช้ต้องพึ่งพาโทรศัพท์และจำเป็นต้องมีอุปกรณ์ที่ใช้งานได้ตลอดเวลา อย่างไรก็ตาม บางครั้งอุปกรณ์อาจติดอยู่ในลูปการรีบูต ซึ่งทำให้ผู้ใช้ต้องยื่นคำขอรับการสนับสนุน หรือสอบถามเกี่ยวกับการรับประกัน กระบวนการนี้สร้างความหงุดหงิดให้ผู้ใช้ และ มีค่าใช้จ่ายสูงสำหรับผู้ผลิตอุปกรณ์และผู้ให้บริการเครือข่าย

Android 8.0 (ระดับ API 26) ขึ้นไปมีฟีเจอร์ที่ทริกเกอร์กระบวนการกู้คืนเมื่อตรวจพบว่าคอมโพเนนต์หลักของระบบติดอยู่ในลูปข้อขัดข้อง เมื่อได้รับ สัญญาณนี้ ฟีเจอร์ทีมกู้ภัยจะดำเนินการตามลำดับเพื่อ กู้คืนอุปกรณ์ ในกรณีสุดท้าย Rescue Party จะรีบูตอุปกรณ์เข้าสู่ Recovery Mode และแจ้งให้ผู้ใช้รีเซ็ตเป็นค่าเริ่มต้น

การใช้งาน

Rescue Party จะเปิดใช้อยู่โดยค่าเริ่มต้นและการติดตั้งใช้งานจะอยู่ใน /services/core/java/com/android/server/RescueParty.java Rescue Party จะได้รับข้อมูลเกี่ยวกับเหตุการณ์การบูตและข้อขัดข้อง และจะเริ่มทำงานในกรณีต่อไปนี้

  • system_server รีสตาร์ทมากกว่า 5 ครั้งใน 5 นาที
  • แอปของระบบที่ทำงานอยู่ตลอดเวลาขัดข้องมากกว่า 5 ครั้งใน 30 วินาที

เมื่อ Rescue Party ตรวจพบสถานการณ์เหล่านี้ ระบบจะยกระดับการกู้คืนไปที่ระดับถัดไป ประมวลผลงานที่เชื่อมโยงกับระดับนั้น และปล่อยให้อุปกรณ์ ดำเนินการต่อเพื่อดูว่ากู้คืนได้หรือไม่ แต่ละระดับจะมีความก้าวร้าวมากขึ้นเรื่อยๆ ใน สิ่งที่ล้างหรือรีเซ็ต ระดับสุดท้ายจะแจ้งให้ผู้ใช้รีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นจากโรงงาน

Rescue Party ไม่จำเป็นต้องมีการรองรับจากฮาร์ดแวร์แบบพิเศษ หากมีการติดตั้งใช้งาน ระบบการกู้คืนของอุปกรณ์ต้องตอบสนองต่อคำสั่ง --prompt_and_wipe_data และอุปกรณ์ต้องมีวิธีให้ผู้ใช้ยืนยันการทำลายข้อมูลผู้ใช้ ก่อนดำเนินการต่อ ระบบการกู้คืนควรให้ตัวเลือกแก่ผู้ใช้ในการพยายามเปิดเครื่องอุปกรณ์อีกครั้งด้วย

เนื่องจากแต่ละระดับการกู้คืนจะเพิ่มเวลาได้สูงสุด 5 นาทีก่อนที่อุปกรณ์จะใช้งานได้อีกครั้ง ผู้ผลิตอุปกรณ์จึงไม่ควรเพิ่มระดับการกู้คืนที่กำหนดเอง เวลาที่เพิ่มขึ้น เมื่ออุปกรณ์ใช้งานไม่ได้ทำให้ผู้ใช้มีแนวโน้มที่จะเริ่มการสอบถามเกี่ยวกับการสนับสนุนหรือ การรับประกันแทนที่จะกู้คืนอุปกรณ์ด้วยตนเอง

การตรวจสอบความถูกต้อง

Rescue Party จะระงับเหตุการณ์การกู้คืนทั้งหมดเมื่ออุปกรณ์มีการเชื่อมต่อข้อมูล USB ที่ใช้งานอยู่ เนื่องจากเป็นสัญญาณที่ชัดเจนว่ามีคนกำลังแก้ไขข้อบกพร่องของอุปกรณ์

หากต้องการลบล้างการระงับนี้ ให้เรียกใช้คำสั่งต่อไปนี้

adb shell setprop persist.sys.enable_rescue 1

จากนั้นให้ทริกเกอร์ลูปข้อขัดข้องของระบบหรือ UI โดยทำดังนี้

  • หากต้องการเรียกใช้system_serverลูปข้อขัดข้องระดับต่ำ ให้เรียกใช้คำสั่งต่อไปนี้

    adb shell setprop debug.crash_system 1
    adb shell stop
    adb shell start
  • หากต้องการทริกเกอร์ลูปข้อขัดข้องของ SystemUI ระดับกลาง ให้เรียกใช้คำสั่งต่อไปนี้

    adb shell setprop debug.crash_sysui 1

ทั้ง 2 ลูปการขัดข้องจะเริ่มตรรกะการกู้คืน นอกจากนี้ Rescue Party ยังบันทึกการดำเนินการกู้คืนทั้งหมดลงในบันทึก PackageManager แบบถาวรที่เก็บไว้ใน /data/system/uiderrors.txt เพื่อตรวจสอบและแก้ไขข้อบกพร่องในภายหลังด้วย รายงานข้อบกพร่องยังรวมถึงบันทึกถาวรเหล่านี้ในส่วนข้อความเตือนของแพ็กเกจด้วย