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

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

Android 8.0 (API ระดับ 26) ขึ้นไปมีฟีเจอร์ที่ทริกเกอร์กระบวนการกู้คืนเมื่อตรวจพบคอมโพเนนต์หลักของระบบติดอยู่ในลูปการขัดข้อง เมื่อได้รับสัญญาณนี้ ฟีเจอร์ Rescue Party จะดำเนินการตามลำดับเพื่อกู้คืนอุปกรณ์ และหากจำเป็น 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 เพื่อให้ตรวจสอบและแก้ไขข้อบกพร่องได้ในภายหลัง รายงานข้อบกพร่องยังรวมบันทึกแบบถาวรเหล่านี้ไว้ในส่วนข้อความคำเตือนของแพ็กเกจ ด้วย