วงจรชีวิตของ Android
ทำความเข้าใจวงจรชีวิตของกิจกรรมและการประกอบ
วงจรชีวิตของ Android เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
วงจรชีวิตคืออะไร
กิจกรรม Android ทุกตัวจะเปลี่ยนผ่านชุดสถานะต่าง ๆ ขณะที่ผู้ใช้เปิด ออกจาก และกลับมายังแอปของคุณ สิ่งนี้เรียกว่าวงจรชีวิต
การทำความเข้าใจเรื่องนี้ช่วยให้คุณเริ่มและหยุดการทำงานได้ในเวลาที่เหมาะสม
การเรียกกลับหลักของกิจกรรม
การเรียกกลับของวงจรชีวิตกิจกรรมแบบดั้งเดิมจะทำงานตามลำดับดังนี้:
onCreate— กิจกรรมกำลังถูกสร้างonStart— กำลังแสดงให้เห็นonResume— อยู่เบื้องหน้าและโต้ตอบได้onPause/onStop/onDestroy— กำลังออกจากกิจกรรม
ลำดับการทำงานทั่วไป
การเปิดแอป: onCreate → onStart → onResume
การกดปุ่มหน้าหลัก: onPause → onStop
การกลับมา: onRestart → onStart → onResume
สถานะวงจรชีวิตเทียบกับเหตุการณ์
ไลบรารี วงจรชีวิต ของ Jetpack จำลองสิ่งนี้ด้วยสถานะ (CREATED, STARTED, RESUMED, DESTROYED) และเหตุการณ์ (ON_CREATE, ON_START, ...)
คอมโพเนนต์สามารถสังเกตสิ่งเหล่านี้แทนการเขียนทับการเรียกกลับดิบได้
เจ้าของวงจรชีวิต
กิจกรรม Fragment และโฮสต์ของ Compose เป็นเจ้าของวงจรชีวิต โดยเปิดเผยออบเจกต์ Lifecycle ที่คอมโพเนนต์อื่นสามารถสังเกตได้
val owner: LifecycleOwner = this // an Activity
val lifecycle = owner.lifecycleเหตุใดเรื่องนี้จึงสำคัญต่อทรัพยากร
ทรัพยากรหลายอย่างควรทำงานเฉพาะขณะที่หน้าจอแสดงอยู่เท่านั้น:
- การอัปเดตตำแหน่ง
- ตัวฟังเซนเซอร์
- เซสชันกล้อง
เริ่มการทำงานใน onStart/onResume และหยุดการทำงานใน onStop/onPause เพื่อประหยัดแบตเตอรี่และป้องกันการรั่วไหลของทรัพยากร
วงจรชีวิตใน Jetpack Compose
คอมโพสิเบิลไม่มีการเรียกกลับของกิจกรรม แต่มีวงจรชีวิตของคอมโพสิชันแทน โดยจะเข้าสู่คอมโพสิชัน ถูกประกอบใหม่ และออกจากคอมโพสิชันในที่สุด
ตอบสนองต่อคอมโพสิชันด้วย DisposableEffect
DisposableEffect จะตั้งค่าการทำงานเมื่อคอมโพสิเบิลเข้าสู่คอมโพสิชัน และล้างการทำงานเมื่อคอมโพสิเบิลออกจากคอมโพสิชัน
@Composable
fun Screen() {
DisposableEffect(Unit) {
// setup, e.g. register listener
onDispose {
// cleanup when leaving composition
}
}
}การสังเกตวงจรชีวิตจริงใน Compose
หากต้องการตอบสนองต่อเหตุการณ์วงจรชีวิตจริงของกิจกรรมจากคอมโพสิเบิล ให้สังเกต LifecycleOwner ด้วย DefaultLifecycleObserver
@Composable
fun OnResume(onResume: () -> Unit) {
val owner = LocalLifecycleOwner.current
DisposableEffect(owner) {
val obs = object : DefaultLifecycleObserver {
override fun onResume(o: LifecycleOwner) = onResume()
}
owner.lifecycle.addObserver(obs)
onDispose { owner.lifecycle.removeObserver(obs) }
}
}ViewModel และวงจรชีวิต
โปรดจำไว้ว่า ViewModel มีอายุยืนกว่าสถานะวงจรชีวิตแต่ละสถานะ เช่น onStart/onStop โดยจะถูกล้างเฉพาะเมื่อเจ้าของหายไปอย่างถาวรเท่านั้น นี่เป็นเหตุผลโดยตรงที่ทำให้การเก็บสถานะไว้ที่นี่ปลอดภัย
นำทุกอย่างมารวมกัน
หน้าจอที่มีโครงสร้างดีจะ:
- เก็บสถานะถาวรไว้ใน ViewModel
- เริ่มและหยุดทรัพยากรที่ใช้เฉพาะขณะแสดง โดยคำนึงถึงวงจรชีวิต
- รวบรวมโฟลว์เฉพาะขณะที่ส่วนติดต่อผู้ใช้อยู่ในสถานะอย่างน้อย STARTED (บทเรียนถัดไป)
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับวงจรชีวิตของคุณ
สรุปทบทวน
สิ่งที่คุณได้เรียนรู้:
- กิจกรรมจะเปลี่ยนผ่านสถานะ CREATED, STARTED, RESUMED, DESTROYED
- Compose มีวงจรชีวิตของคอมโพสิชันเป็นของตนเอง ซึ่งจัดการผ่าน
DisposableEffect - สังเกต
LifecycleOwnerเพื่อตอบสนองต่อเหตุการณ์วงจรชีวิตจริง - ViewModel มีอายุยืนกว่าสถานะเหล่านี้โดยเจตนา
เรียนรู้ Kotlin ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 36
- บทเรียน
- 152
คำถามที่พบบ่อย
บทเรียน “วงจรชีวิตของ Android” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วงจรชีวิตของ Android” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วงจรชีวิตของ Android”
ทำความเข้าใจวงจรชีวิตของกิจกรรมและการประกอบ คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “วงจรชีวิตของ Android” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดจึงควรใช้ ViewModel
- การเปิดเผยสถานะจาก ViewModel
- วงจรชีวิตของ Android
- collectAsStateWithLifecycle