ผู้ใช้ต้องพึ่งพาโทรศัพท์และจำเป็นต้องมีอุปกรณ์ที่ใช้งานได้ตลอดเวลา อย่างไรก็ตาม บางครั้งอุปกรณ์ก็ติดอยู่ในลูปการรีบูต ซึ่งทำให้ผู้ใช้ยื่นคำขอรับความช่วยเหลือหรือสอบถามการรับประกัน กระบวนการนี้สร้างความหงุดหงิดให้ผู้ใช้และมีค่าใช้จ่ายสูงสำหรับผู้ผลิตอุปกรณ์และผู้ให้บริการเครือข่าย
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 1adb shell stopadb shell startหากต้องการทริกเกอร์ลูปการขัดข้อง SystemUI ระดับกลาง ให้เรียกใช้คำสั่งต่อไปนี้
adb shell setprop debug.crash_sysui 1
ลูปการขัดข้องทั้ง 2 รายการจะเริ่มต้นตรรกะการกู้คืน นอกจากนี้ Rescue Party ยังบันทึกการดำเนินการกู้คืนทั้งหมดลงในบันทึก PackageManager แบบถาวรที่จัดเก็บไว้ที่ /data/system/uiderrors.txt เพื่อให้ตรวจสอบและแก้ไขข้อบกพร่องได้ในภายหลัง รายงานข้อบกพร่องยังรวมบันทึกแบบถาวรเหล่านี้ไว้ในส่วนข้อความคำเตือนของแพ็กเกจ ด้วย