ฉันต้องตรวจสอบว่าแอปพลิเคชันของฉันถูกบังคับให้ปิด ขัดข้อง หรือยุติตามปกติหรือไม่ คำถามของฉันคือ: คุณจะทำสิ่งนั้นในสภาพแวดล้อม Android ได้อย่างไร การจัดการข้อยกเว้นเป็นเรื่องง่าย ฉันเพียงแค่ต้องแทนที่ Thread.setDefaultExceptionHandler เท่านั้น ส่วนที่ยากคือ: ฉันจะแยกแยะการบังคับปิดเครื่องจาก "ปกติ" ได้อย่างไร (เช่น การกดปุ่มย้อนกลับ หรือปุ่มโฮม + เวลานาน ฯลฯ)
เหตุผลก็คือ: เราสามารถซิงโครไนซ์เนื้อหาของฐานข้อมูลท้องถิ่นกับเซิร์ฟเวอร์ได้ และเรามีเหตุผลที่ดีที่จะอนุญาตการดำเนินการนี้ เฉพาะในสถานะ 1 ของกิจกรรมหลัก และไม่ได้อยู่ในสถานะ 2 อย่างไรก็ตาม หากผู้ใช้พบข้อผิดพลาดทางความหมายที่เกี่ยวข้องกับ db ในโปรแกรม ในสถานะ 2 ของกิจกรรมหลัก แล้วเขาหรือเธอก็สามารถติดอยู่ที่นั่นได้
เราเตรียมพร้อมสำหรับการหยุดชะงักของสายเรียกเข้าและการเปลี่ยนแปลงการกำหนดค่าอื่นๆ ดังนั้น หากแอปพลิเคชันติดอยู่ในสถานะ 2 การบังคับปิดแอปแล้วเปิดใหม่อีกครั้ง จะยังคงปล่อยให้ผู้ใช้อยู่ในระยะที่ 2 แทนที่จะเป็นระยะที่ 1
ดังนั้นเราจึงต้องการทิ้งทางสำหรับผู้ใช้ หลังจากที่บังคับปิดแล้วเพื่อกลับเข้าสู่ขั้นตอนที่ 1 และสามารถซิงโครไนซ์ฐานข้อมูลได้ ดังนั้นงานส่วนใหญ่ของเขาหรือเธอจึงสามารถบันทึกได้