Ciclo de vida de la función componible

jetpack compose es un moderno conjunto de herramientas de interfaz de usuario para Android. es una interfaz de usuario declarativa que reemplaza a la imperativa (xml).
en la forma clásica que usa para manejar muchas actividades o fragmentos del ciclo de vida ( onStart , onCreate , onResume ... etc.)
según documentos oficiales :
El ciclo de vida de un componible se define por los siguientes eventos: ingresar a la Composición, volver a componer 0 o más veces y salir de la Composición.
entonces tenemos tres eventos:
I. Introducir Composición
yo Obtener recomponer por N veces
tercero dejando la composicion
Una Composición solo puede ser producida por una composición inicial y actualizada por recomposición . La única manera de modificar una Composición es a través de la recomposición .
por ejemplo:
@Composable
fun MoviesScreen(movies: List<Movie>) {
Column {
for (movie in movies) {
key(movie.id) { // Unique ID for this movie
MovieOverview(movie)
}
}
}
}
de lo contrario, tenemos que manejar la reposición sin necesidad de recuperar la función.
Si un componible ya está en la Composición, puede omitir la recomposición si todas las entradas son estables y no han cambiado.
Entonces, ¿cómo hacer la recomposición?
la recomposición depende del tipo de variables de la función componible
si las variables son de tipos estables (( Boolean
, Int
, Long
, Float
, Char
, etc.), no se producirá ninguna recomposición.
Entonces, ¿cómo convertir estos tipos estables en un tipo que pueda conducir a la recomposición?
bueno, según los documentos oficiales :
Las funciones componibles pueden usar la remember
API para almacenar un objeto en la memoria. Un valor calculado por remember
se almacena en la Composición durante la composición inicial y el valor almacenado se devuelve durante la recomposición. remember
se puede utilizar para almacenar objetos mutables e inmutables.
entonces tenemos que usar la interfaz MutableState<T> para agregar mutabilidad a nuestra función de composición para que la recomposición ocurra cada vez que cambie el valor de este tipo.
la clase MutableState<T> si de 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 = ….
hay otros tipos de estado que no sean State<T> o MutableState<T> , compuse también admite lo siguiente:
- Datos en tiempo real
- Caudal
- RxJava2
gracias por leer :)
referencias :