Yaşam döngüsü kitaplığı, Jetpack Compose ile entegrasyon yapmanızı sağlayan yerleşik API'ler sunar. Temel API'ler şunları içerir:
- Geçerli
Lifecycle.State
için akışlar. - Belirli bir
Lifecycle.Event
öğesine göre engelleme çalıştırmanızı sağlayanLifecycleEffects
.
Bu entegrasyonlar, Oluşturma hiyerarşisindeki Yaşam Döngülerini yönetmek için uygun kancalar sağlar. Bu dokümanda, bunları uygulamanızda nasıl kullanabileceğiniz açıklanmaktadır.
Akışlarla yaşam döngüsü durumunu toplama
Yaşam döngüsü, geçerli Lifecycle.State
değerini Kotlin StateFlow
olarak sağlayan bir currentStateFlow
özelliğini gösterir. Bu Flow
, State
olarak toplanabilir. Bu izin, uygulamanızın kompozisyon sırasında Yaşam Döngüsündeki değişiklikleri okumasına olanak tanır.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
Yukarıdaki örneğe lifecycle-common
modülü kullanılarak erişilebilir. currentStateAsState()
yöntemi, mevcut Yaşam Döngüsü durumunu tek bir satırla kolayca okumanızı sağlayan lifecycle-runtime-compose
modülünde mevcuttur. Aşağıdaki örnekte bu durum gösterilmektedir:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Yaşam döngüsü olaylarında kod çalıştırma
Belirli bir Lifecycle.Event
gerçekleştiğinde engelleme çalıştırmanızı sağlayan LifecycleEffects
de vardır.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
LifecycleEventEffect
'a ek olarak, LifecycleStartEffect
ve LifecycleResumeEffect
öğelerini de kullanabilirsiniz. Bu API'ler belirli etkinliklere bağlıdır. Ayrıca, birincil blokunda, etkinliğin başlatmış olabileceği kodların temizlenmesine yardımcı olan ek bir blok da bulunur.
Yaşam DöngüsüBaşlangıç Efekti
LifecycleStartEffect
, LifecycleEffect
öğesine benzer ancak yalnızca Lifecycle.Event.ON_START
etkinliklerinde çalışır. Ayrıca diğer Oluştur tuşları gibi çalışan tuşları da kabul eder. Anahtarın değişmesi, engellemenin tekrar çalışmasını tetikler.
Bir Lifecycle.Event.ON_STOP
etkinliği olduğunda veya efekt besteden çıktığında onStopOrDispose
bloğu yürütür. Bu, başlangıç bloğunun bir parçası olan
çalışmaların temizlenmesini sağlar.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
Yaşam DöngüsüDevam Efekti
LifecycleResumeEffect
, LifecycleStartedEffect
ile aynı şekilde çalışır ancak bunun yerine Lifecycle.Event.ON_RESUME
etkinliğinde yürütülür. Ayrıca temizlemeyi yapan bir onPauseOrDispose
bloğu da sağlar.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}