Swift: รู้จักกับ Application State ใน iOS กันเถอะ !!
บทความนี้เกี่ยวกับ สถานะของ Application ว่ามีสถานะอะไรบ้าง และแต่ละสถานะบ่งบอกถึงอะไรบ้าง เราไปดูกันเลยครับ
Application State
สำหรับ Application State หรือ สถานะของ App ซึ่งแบ่งออกเป็น 5 สถานะ ดังนี้
- Not running
- Inactive
- Active
- Background
- Suspended
โดยแต่ละสถานะนั้นบ่งบอกอะไรบ้าง ก่อนอื่นเรามารู้จักกับ foreground และ background กันก่อน
- foreground: หน้าจอของ App กำลังเปิดอยู่
- background: หน้าจอของ App ไม่ได้เปิดอยู่
จากรูปด้านบนจะเห็นว่าสถานะ Inactive, Active จะอยู่ใน foreground และสถานะ background จะอยู่ใน background ส่วน Not running กับ Suspended จะไม่อยู่ใน foreground และ background เลย
หลังจากที่เรารู้จัก foreground, background แล้วเรามาลุยสถานะกันต่อ
- Not running: App ถูกปิดตัวลง หรือ App ถูก Clear ไปเรียบร้อยแล้ว(สไลด์เคลียร์แอป) โดยสถานะนี้จะไม่อยู่ใน foreground และ background
- Inactive: App อยู่ใน foreground โดยที่ไม่มีการตอบสนองใดๆกับ user ถ้ายังไม่เห็นภาพ ลองนึกถึง method didFinishLaunchingWithOptions ที่กำลังเปิด App ขึ้นมาโดยที่ user ยังไม่สามารถโต้ตอบกับ UI ได้
- Active: App อยู่ใน foreground และพร้อมที่จะตอบสนองกับ user เช่นสามารถกดปุ่มบนหน้าจอใน App ได้ หรือแสดงผลต่างๆ สถานะนี้ก็คือตอนที่เราเปิด App ขึ้นมาเสร็จแล้วนั่นเอง ปล. หากไม่มีการโต้ตอบจาก user เป็นเวลาสักพักนึงสถานะจะถูกเปลี่ยนเป็น Inactive
- Background: App อยู่ใน background สถานะนี้จะเกิดขึ้นตอน user กดปุ่ม home นั่นเอง และ App ยังคงทำงานอยู่ ปล. สถานะนี้จะอยู่เพียงไม่นานก็จะเปลี่ยนเป็น Suspended แต่ถ้าหากเปิดแอพใหม่อีกครั้ง ก็จะเปลี่ยนสถานะเป็น Inactive -> Active
- Suspended: App อยู่ใน background โดยที่สถานะ Suspended มาจากสถานะ Background นั่นเอง เป็นการระงับ App ไว้ชั่วคราวก่อนที่จะเคลียร์ App
ปล.ในกรณีที่ความจำของเครื่องเหลือน้อยระบบอาจล้าง App และเปลี่ยนสถานะจาก Suspended ให้กลายเป็น Not running เพื่อให้มีที่ว่างพอสำหรับ Application อื่นๆ
จบไปแล้วนะครับสำหรับ Application State หากมีข้อผิดพลาดประการใดต้องขอโทษด้วยนะครับ หวังว่าจะเป็นประโยชน์กับหลายๆคน บทความหน้าเราจะมาดูว่ามี Methold ไหนที่จะ Handle สถานะเหล่านี้ได้บ้าง
สำหรับ Method ที่ Handler กดได้ที่ลิ้งด้านล่างเลยครับ