Siklus hidup fungsi yang dapat dikomposisi

Dec 01 2022
jetpack compose adalah toolkit UI modern untuk android. adalah UI deklaratif yang menggantikan yang Imperatif (xml).

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 rememberAPI untuk menyimpan objek di memori. Nilai yang dihitung oleh rememberdisimpan dalam Komposisi selama komposisi awal, dan nilai yang disimpan dikembalikan selama komposisi ulang. rememberdapat 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 :