ספריית מחזור החיים כוללת ממשקי API מובנים שמאפשרים לשלב ב-Jetpack פיתוח נייטיב. ממשקי ה-API העיקריים כוללים את אלה:
- העברה של
Lifecycle.State
הנוכחי. LifecycleEffects
שמאפשר להריץ חסימה על סמך ספציפיLifecycle.Event
.
השילובים האלה מספקים קטעי הוק (hooks) נוחים לניהול מחזורי חיים בתוך יצירת היררכיה. במסמך הזה מוסבר איך להשתמש בהם באפליקציה.
איסוף מצב מחזור החיים באמצעות תהליכים
מחזור החיים חושף מאפיין currentStateFlow
שמספק את הערך הנוכחי של
Lifecycle.State
בתור StateFlow
Kotlin. אפשר לאסוף את ה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
דומה ל-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
}
}