Library Lifecycle menawarkan API bawaan yang memungkinkan Anda berintegrasi dengan Jetpack Compose. API utama mencakup hal berikut:
- Flow untuk
Lifecycle.State
saat ini. LifecycleEffects
yang memungkinkan Anda menjalankan blok berdasarkanLifecycle.Event
tertentu.
Integrasi ini memberikan hook yang mudah digunakan untuk mengelola Siklus Proses dalam hierarki Compose. Dokumen ini menguraikan cara menggunakannya di aplikasi Anda.
Mengumpulkan status siklus proses dengan alur
Lifecycle mengekspos properti currentStateFlow
yang menyediakan Lifecycle.State
saat ini sebagai StateFlow
Kotlin. Anda dapat mengumpulkan Flow
ini sebagai
State
. Hal ini memungkinkan aplikasi Anda membaca perubahan dalam Siklus Proses selama
komposisi.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
Contoh sebelumnya dapat diakses menggunakan modul lifecycle-common
. Metode
currentStateAsState()
tersedia di modul lifecycle-runtime-compose
, yang memungkinkan Anda membaca status Siklus Proses saat ini dengan mudah dengan
satu baris. Contoh berikut menunjukkan hal tersebut:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Menjalankan kode pada peristiwa siklus proses
Ada juga LifecycleEffects
yang memungkinkan Anda menjalankan blok saat
Lifecycle.Event
tertentu terjadi.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
Selain LifecycleEventEffect
, Anda juga dapat menggunakan
LifecycleStartEffect
dan LifecycleResumeEffect
. API ini terikat dengan
peristiwa tertentu. Mereka juga menawarkan blok tambahan dalam blok utamanya
yang membantu membersihkan kode yang mungkin telah dimulai oleh peristiwa.
{i>LifecycleStartEffect<i}
LifecycleStartEffect
mirip dengan LifecycleEffect
, tetapi hanya berjalan
pada peristiwa Lifecycle.Event.ON_START
. Metode ini juga menerima kunci yang berfungsi seperti
kunci Compose lainnya. Saat kunci berubah, pemblokiran akan memicu pemblokiran berjalan lagi.
Saat ada peristiwa Lifecycle.Event.ON_STOP
atau efek keluar dari komposisi,
peristiwa tersebut akan mengeksekusi blok onStopOrDispose
. Hal ini memungkinkan untuk membersihkan pekerjaan
apa pun yang merupakan bagian dari blok awal.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
LifecycleResumeEffect
LifecycleResumeEffect
berfungsi dengan cara yang sama seperti
LifecycleStartedEffect
, tetapi dieksekusi di peristiwa Lifecycle.Event.ON_RESUME
. Kode ini juga menyediakan blok onPauseOrDispose
yang menjalankan
pembersihan.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}