Siklus hidup fungsi yang dapat dikomposisi

jetpack compose adalah toolkit UI modern untuk android. adalah UI deklaratif yang menggantikan yang Imperatif (xml).
dengan cara klasik yang Anda gunakan untuk menangani banyak aktivitas atau siklus hidup fragmen.( onStart , onCreate , onResume …etc)
menurut dokumen resmi :
Siklus proses komposisi ditentukan oleh peristiwa berikut: memasuki Komposisi, dikomposisi ulang 0 kali atau lebih, dan keluar dari Komposisi.
jadi kami memiliki tiga acara:
I. Masukkan Komposisi
II. Mendapatkan komposisi ulang untuk N kali
AKU AKU AKU. meninggalkan komposisi
Komposisi hanya dapat dihasilkan oleh komposisi awal dan diperbarui dengan komposisi ulang . Satu-satunya cara untuk memodifikasi Komposisi adalah melalui rekomposisi .
Misalnya:
@Composable
fun MoviesScreen(movies: List<Movie>) {
Column {
for (movie in movies) {
key(movie.id) { // Unique ID for this movie
MovieOverview(movie)
}
}
}
}
jika tidak, kita harus menangani rekoposisi tanpa perlu mengingat fungsi.
Jika komposisi sudah ada dalam Komposisi, komposisi dapat melewati rekomposisi jika semua input stabil dan tidak berubah.
jadi bagaimana melakukan Rekomposisi?
recompositon bergantung pada jenis variabel fungsi yang dapat disusun
jika variabel berasal dari tipe stabil(( Boolean
, Int
, Long
, , Float
, Char
, dll) maka tidak akan terjadi rekomposisi.
jadi bagaimana cara mengubah tipe stabil ini menjadi tipe yang dapat menyebabkan rekomposisi?
baik, menurut dokumen resmi :
Fungsi yang dapat disusun dapat menggunakan remember
API untuk menyimpan objek di memori. Nilai yang dihitung oleh remember
disimpan dalam Komposisi selama komposisi awal, dan nilai yang disimpan dikembalikan selama komposisi ulang. remember
dapat digunakan untuk menyimpan objek yang dapat diubah dan tidak dapat diubah.
jadi kita harus MutableState<T> antarmuka untuk menambahkan mutabilitas ke fungsi penulisan kita sehingga komposisi ulang akan terjadi setiap kali nilai dari tipe ini berubah.
kelas MutableState<T> jika dari tipe State<T>
interface MutableState<T> : State<T> {
override var value: T
}
mutableStateOf
var list by remeber{mutableStateOf(initialValue)}
or
val list = remember { mutableStateOf(initialValue) } // val variable will not change
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
list.value = ….
ada jenis State lain selain State<T> atau MutableState<T> , compose juga mendukung yang berikut ini:
- LiveData
- Mengalir
- RxJava2
Terima kasih sudah membaca :)
referensi :