Ciclo de vida de la función componible

Dec 01 2022
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).

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 rememberAPI para almacenar un objeto en la memoria. Un valor calculado por rememberse almacena en la Composición durante la composición inicial y el valor almacenado se devuelve durante la recomposición. rememberse 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 :