ทำความเข้าใจ Activity Lifecycle ง่ายนิดเดียว!
แต่ยากเยอะ เอ้ยไม่ใช่ หยิบรูปนี้มาอ่าน เข้าใจได้ทันที!

สาย Android Developer มีเรื่องนึงที่เป็น fundamental ที่ต้องรู้ คือ Activity Lifecycle มันคือวงจรชีวิตของ activity ต่าง ๆ ในแอปของเรา การที่เราทำอะไรต่างๆในแอปพลิเคชั่น ก็จะอยู่ใน Activity Lifecycle เสมอ ไม่ว่าจะเป็นการเข้ามาที่แอพ การเปลี่ยนหน้าในแอพ การออกจากแอพ การกด home แล้วไปแอพอื่นก็ด้วย
หน้าตาของ Activity Lifecycle ถ้าเราค้นตาม Google จะเป็นภาพนี้เลย

แล้ว Lifecycle callbacks แต่ละอันคืออะไรบ้างนะ?
onCreate()
: activity ของเราถูกสร้างครั้งแรก และเกิดsetContentView()
ที่นี่onStart()
: activity ของเราพร้อมแสดงแล้ว หรือหลังจากกลับจาก backgroundonResume()
: มีสองแบบ คือ เปิดหน้านี้มาใหม่ โดยเกิดonCreate()
กับonStart()
หรือ กลับเข้าหน้า activity นี้มาใหม่ เช่น user lock screen แล้วปลดล็อกแล้วกลับมาหน้าแอพใหม่onPause()
: หยุดการทำงานของ activity นั้นไว้ชั่วคราว เช่น ไปหน้าใหม่ หรือปิดหน้านี้onRestart()
: activity นั้นเริ่มกลับมาแสดงใหม่ เช่น user เปิดแอพใหม่จาก recent app ที่เปิดไว้onStop()
: หยุดการทำงานของ activity นั้นไปเลย เช่น user กดปุ่ม homeonDestroy()
: activity ถูกทำลาย บายยย เช่น user กด back เพื่อออกจากแอพ
แต่เราชอบรูปนี้มากกว่า เพราะมันสั้น และเข้าใจได้ง่ายกว่า จริง ๆ นะ

เรามาใส่รายละเอียดกันเพิ่มดีกว่า!
เมื่อเปิดแอพขึ้นมานั่นจะเข้า onCreate()
เพื่อสร้าง activity หน้านั้นขึ้นมา แล้วเข้า onStart()
เพื่อเริ่มต้น activity แล้วเข้า onResume()
ซึ่งเราจะเห็น view ของ activity แล้วเพราะได้ render เสร็จแล้วนั่นเอง

เมื่อมีการพับหน้าจอลง เช่น มือถือเข้าสู่โหมดล็อกหน้าจอ ก็จะเข้า onPause()

แล้วเมื่อปลดล็อกหน้าจอออกมาแล้ว จะ onResume()
กลับมาใหม่

เมื่อเรากดปุ่ม home ออกจากแอพ จะเข้า onPause()
จากนั้นเข้า onStop()
เพื่อหยุดการทำงานของ activity นั้นลงไปก่อน
ถ้าเราเข้าหน้า activity ใหม่ จะสร้างหน้า activity ตาม lifecycle เป็น onCreate()
→ onStart()
→ onResume()
เหตุการณ์นี้เกิดระหว่าง onPause()
และ onStop()
ของหน้า activity เดิม
เมื่อกลับเข้ามาในแอพ จะทำการ onRestart()
activity นั้นกลับมาใหม่ แล้วเข้าสู่ onStart()
และ onResume()
เพื่อ render หน้า activity นั้นกลับมาใหม่

และเมื่อเราออกจาก activity หน้านั้นโดยการกด back หรืออะไรก็ตามที่ทำให้ activity นั้นถูกทำลาย หรือออกจากแอพ จาก onResume()
จะเข้า onPause()
จากนั้นเข้า onStop()
เพื่อหยุดการทำงานของ activity และเข้า onDestroy()
เพื่อทำลาย activity นั้นซะ

อันนี้รวมทั้งหมดเนอะ

สำหรับการลองเล่นเกี่ยวกับ Actvity Lifecycle น้ัน เรามักจะใส่ toast ต่างๆไว้ใน lifecycle แต่ละอัน เพื่อทำการ check เนอะ ว่าตอนนี้เข้าอันไหนบ้าง หน้าตาแบบไว ๆ
ตัว demo สามารถดูได้ที่คลิปนี้เลย
สำหรับคลิปแบบละเอียดแล้วมั้งนะ
(TBC)
ติดตามข่าวสารตามช่องทางต่าง ๆ และทุกช่องทางโดเนทกันไว้ที่นี่เลย แนะนำให้ใช้ tipme เน้อ ผ่าน promptpay ได้เต็มไม่หักจ้า
ติดตามข่าวสารแบบไว ๆ มาที่ Twitter เลย บางอย่างไม่มีในบล็อก และหน้าเพจนะ
สวัสดีจ้า ฝากเนื้อฝากตัวกับชาวทวิตเตอร์ด้วยน้าา
— Minseo | Stocker DAO (@mikkipastel) August 24, 2020