ไลบรารี Lifecycle มี API ในตัวที่ช่วยให้คุณผสานรวมกับ Jetpack เขียน API ที่สำคัญประกอบด้วย
- ขั้นตอนสำหรับ
Lifecycle.Stateปัจจุบัน LifecycleEffectsที่ให้คุณเรียกใช้การบล็อกตามLifecycle.Event
การผสานรวมเหล่านี้ทำให้เกิดฮุกที่สะดวกในการจัดการวงจรภายใน ลำดับชั้นการเขียน เอกสารนี้ระบุวิธีใช้การตั้งค่าดังกล่าวในแอป
รวบรวมสถานะของวงจรที่มีโฟลว์
วงจรจะแสดงพร็อพเพอร์ตี้ currentStateFlow ที่ระบุพร็อพเพอร์ตี้
Lifecycle.State เป็น Kotlin StateFlow คุณสามารถเก็บ Flow นี้เป็น
State วิธีนี้ช่วยให้แอปของคุณอ่านการเปลี่ยนแปลงในวงจรระหว่าง
องค์ประกอบ
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
ตัวอย่างก่อนหน้านี้เข้าถึงได้โดยใช้โมดูล lifecycle-common
เมธอด currentStateAsState() พร้อมใช้งานใน lifecycle-runtime-compose
ซึ่งช่วยให้คุณอ่านสถานะของวงจรปัจจุบันได้อย่างสะดวกด้วย
บรรทัดเดียว ตัวอย่างต่อไปนี้แสดงให้เห็นภาพดังกล่าว
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
เรียกใช้โค้ดในเหตุการณ์ในวงจร
นอกจากนี้ยังมี LifecycleEffects ที่ให้คุณเรียกใช้การบล็อก
Lifecycle.Eventเกิดขึ้น
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
นอกจาก LifecycleEventEffect แล้ว คุณยังใช้
LifecycleStartEffect และ LifecycleResumeEffect API เหล่านี้เชื่อมโยงกับ
กิจกรรมที่เจาะจงได้ และแสดงการบล็อกเพิ่มเติมภายในการบล็อกหลัก
ซึ่งจะช่วยล้างโค้ดที่เหตุการณ์อาจเริ่มต้นขึ้น
LifecycleStartEffect
LifecycleStartEffect คล้ายกับ LifecycleEffect แต่ทำงานได้เท่านั้น
ใน Lifecycle.Event.ON_START กิจกรรม และยังยอมรับคีย์ที่ทำงานเหมือนคีย์อื่นๆ ด้วย
แป้นเขียน เมื่อมีการเปลี่ยนแปลงคีย์ การบล็อกจะทำงานอีกครั้ง
เมื่อมีเหตุการณ์ Lifecycle.Event.ON_STOP หรือเอฟเฟกต์ออกจากการจัดองค์ประกอบ
จะมีการใช้การบล็อก onStopOrDispose วิธีนี้ช่วยให้คุณจัดการงานต่างๆ ให้เป็นระเบียบ
นั่นเป็นส่วนหนึ่งของช่วงเริ่มต้น
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
เรซูเม่เอฟเฟกต์สำหรับวงจรการใช้งาน
LifecycleResumeEffect จะทำงานในลักษณะเดียวกับ
LifecycleStartedEffect แต่ดำเนินการกับ Lifecycle.Event.ON_RESUME
กิจกรรมแทน และยังมีบล็อก onPauseOrDispose ที่ดำเนินการ
ทำความสะอาดได้
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}