ทำความเข้าใจ Activity Lifecycle ง่ายนิดเดียว!

Android Apr 25, 2025

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

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

หน้าตาของ Activity Lifecycle ถ้าเราค้นตาม Google จะเป็นภาพนี้เลย

ref : https://developer.android.com/guide/components/activities/activity-lifecycle

แล้ว Lifecycle callbacks แต่ละอันคืออะไรบ้างนะ?

  • onCreate(): activity ของเราถูกสร้างครั้งแรก และเกิด setContentView() ที่นี่
  • onStart(): activity ของเราพร้อมแสดงแล้ว หรือหลังจากกลับจาก background
  • onResume(): มีสองแบบ คือ เปิดหน้านี้มาใหม่ โดยเกิด onCreate() กับ onStart() หรือ กลับเข้าหน้า activity นี้มาใหม่ เช่น user lock screen แล้วปลดล็อกแล้วกลับมาหน้าแอพใหม่
  • onPause(): หยุดการทำงานของ activity นั้นไว้ชั่วคราว เช่น ไปหน้าใหม่ หรือปิดหน้านี้
  • onRestart():  activity นั้นเริ่มกลับมาแสดงใหม่ เช่น user เปิดแอพใหม่จาก recent app ที่เปิดไว้
  • onStop(): หยุดการทำงานของ activity นั้นไปเลย เช่น user กดปุ่ม home
  • onDestroy(): 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 สามารถดูได้ที่คลิปนี้เลย

- YouTube
Enjoy the videos and music that you love, upload original content and share it all with friends, family and the world on YouTube.
https://www.youtube.com/shorts/SV7aANY5JCc

สำหรับคลิปแบบละเอียดแล้วมั้งนะ

(TBC)


ติดตามข่าวสารตามช่องทางต่าง ๆ และทุกช่องทางโดเนทกันไว้ที่นี่เลย แนะนำให้ใช้ tipme เน้อ ผ่าน promptpay ได้เต็มไม่หักจ้า

ติดตามข่าวสารแบบไว ๆ มาที่ Twitter เลย บางอย่างไม่มีในบล็อก และหน้าเพจนะ

Tags

Minseo Chayabanjonglerd

I am a full-time Android Developer and part-time contributor with developer community and web3 world, who believe people have hard skills and soft skills to up-skill to da moon.