Library Lifecycle menawarkan API bawaan yang memungkinkan Anda berintegrasi dengan Jetpack Tulis. API utama mencakup hal berikut:
- Flow untuk
Lifecycle.State
saat ini. LifecycleEffects
yang memungkinkan Anda menjalankan blok berdasarkanLifecycle.Event
.
Integrasi ini memberikan hook yang mudah untuk mengelola Siklus Proses dalam Hierarki Compose. Dokumen ini menjelaskan cara menggunakannya dalam aplikasi Anda.
Mengumpulkan status siklus proses dengan flow
Siklus proses mengekspos properti currentStateFlow
yang menyediakan
Lifecycle.State
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
. Tujuan
Metode currentStateAsState()
tersedia di lifecycle-runtime-compose
, yang memungkinkan Anda dengan mudah membaca status Siklus Proses saat ini dengan
baris tunggal. 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 suatu
Lifecycle.Event
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
apa pun yang mungkin telah dimulai.
LifecycleStartEffect
LifecycleStartEffect
mirip dengan LifecycleEffect
, tetapi hanya berjalan
pada peristiwa Lifecycle.Event.ON_START
. Model ini juga menerima kunci yang berfungsi seperti
Kunci Compose. Ketika tombol berubah, hal ini akan memicu blok untuk berjalan lagi.
Saat ada peristiwa Lifecycle.Event.ON_STOP
atau efek keluar dari komposisi,
kode ini menjalankan blok onStopOrDispose
. Hal ini memungkinkan untuk membersihkan semua pekerjaan
itu adalah 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 berjalan di Lifecycle.Event.ON_RESUME
tersebut. Kode ini juga menyediakan blok onPauseOrDispose
yang menjalankan
pembersihan data.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}