ไลบรารี 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
}
}