Application ที่ Run อยู่ อาจถูก Killed ตอนไหนก็ได้ ถ้าหากว่า System อยู่ในสภาวะ Low Resources แล้วเราจะรู้ได้อย่างไรว่าเมื่อไหร่ที่ Application ของเราจะถูก Killed ? แล้วเราบันทึกข้อมูลตอนไหน ?
Android เตรียม Event Handler พิเศษมาไว้สำหรับในการบันทึก State ก่อนที่ Application จะถูก Killed ไว้ให้ดังนี้
onSaveInstanceState(Bundle outstate)
ภายหลัง เมื่อ Activity ที่ถูก Killed ถูกเรียกใช้งานอีกครั้ง System ก็จะเรียก onCreate() พร้อมทั้งส่งค่า Bundle Object ที่เราได้บันทึกเอาไว้ใน onSaveInstanceState มาให้ เราก็เพียงแค่เรียกข้อมูลที่บันทึกไว้กลับคืนมา
onSaveInstanceState() จะถูกเรียกก็ต่อเมื่อ System คิดว่าเราอาจจำเป็นต้อง Restore Activity ในภายหลัง ซึ่ง onSaveInstanceState() จะไม่ถูกเรียก ในกรณี เช่น User กดปุ่ม Back ด้วยเหตุนี้เราจึงไม่ควรบันทึก User Data ภายใน onSaveInstanceState() สิ่งที่ควรบันทึกใน onSaveInstanceState() ควรเป็นข้อมูลสำคัญที่ใช้เพื่อการแสดงผลบน Screen
แหล่งที่มา: หนังสือ Creating Android Applications ของ Chris Haseman
No comments:
Post a Comment