Yaşam Döngüsünü Oluşturma ile entegre etme

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ğlayan LifecycleEffects.

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
  }
}