Ciclo de vida da função que pode ser composta

Dec 01 2022
O jetpack compose é um kit de ferramentas de interface do usuário moderno para Android. é uma UI declarativa que substitui a Imperativa (xml).

O jetpack compose é um kit de ferramentas de interface do usuário moderno para Android. é uma UI declarativa que substitui a Imperativa (xml).

da maneira clássica que você usa para lidar com muitas atividades ou ciclo de vida de fragmentos. ( onStart , onCreate , onResume …etc)

segundo documentos oficiais :

O ciclo de vida de um elemento que pode ser composto é definido pelos seguintes eventos: entrada na composição, recomposição 0 ou mais vezes e saída da composição.

então temos três eventos:

I. Insira a composição

II . Obtendo recomposição por N vezes

III. deixando a composição

Uma composição só pode ser produzida por uma composição inicial e atualizada por recomposição . A única maneira de modificar uma composição é através da recomposição .

por exemplo:

@Composable
fun MoviesScreen(movies: List<Movie>) {
    Column {
        for (movie in movies) {
            key(movie.id) { // Unique ID for this movie
                MovieOverview(movie)
            }
        }
    }
}

caso contrário, teremos que lidar com a recomposição sem a necessidade de chamar a função.

Se um elemento que pode ser composto já estiver na composição, ele poderá ignorar a recomposição se todas as entradas estiverem estáveis ​​e não tiverem sido alteradas.

então como fazer a recomposição?

a recomposição depende do tipo de variável de função combinável

se as variáveis ​​forem de tipos estáveis ​​(( Boolean, Int, Long, Float, Char, etc), nenhuma recomposição ocorrerá.

então como converter esses tipos estáveis ​​em um tipo que pode levar à recomposição?

bem, de acordo com documentos oficiais :

As funções que podem ser compostas podem usar a rememberAPI para armazenar um objeto na memória. Um valor calculado por rememberé armazenado na composição durante a composição inicial e o valor armazenado é retornado durante a recomposição. rememberpode ser usado para armazenar objetos mutáveis ​​e imutáveis.

portanto, temos a interface MutableState<T> para adicionar mutabilidade à nossa função de composição, para que a recomposição ocorra sempre que o valor desse tipo for alterado.

a classe MutableState<T> se for do tipo 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 = ….

existem outros tipos de estado além de State<T> ou MutableState<T> , o Compose também oferece suporte ao seguinte:

  • Dados ao vivo
  • Fluxo
  • RxJava2

obrigado por ler :)

referências :