Ciclo de vida da função que pode ser composta
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 :





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)