Desarrollador Android: pregunta de entrevista
¿Qué activa la recomposición en Jetpack Compose?
Compose recompone funciones que leen estado cuando cambia; inputs estables, estado bien acotado, keys y derivedStateOf reducen trabajo innecesario sin impedir actualizaciones requeridas.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Compose registra qué objetos de estado del snapshot lee cada composable durante la composición. Cuando uno de esos objetos cambia, solo se programan para recomponer los composables que lo leyeron, más aquellos cuyas entradas ya no son iguales; el resto se omiten. La omisión depende de que el compilador pueda demostrar que los parámetros son estables, lo que se cumple para primitivos, cadenas, data classes inmutables y lambdas que capturan valores estables. Los tipos inestables como List de una biblioteca que el compilador no puede analizar fuerzan la recomposición en cada recomposición del padre. derivedStateOf reduce cambios frecuentes a menos actualizaciones aguas abajo.
Ejemplo
Un elemento de LazyColumn que muestra una marca de tiempo formateada desde un reloj que avanza se recompone cada segundo, pero sus filas hermanas no, porque solo la fila que lee el estado del reloj se invalida. Una pantalla que pasaba un ArrayList de elementos recomponía toda la lista en cada pulsación de un campo sin relación hasta que el parámetro pasó a ser ImmutableList y el compilador pudo omitirla.
Errores frecuentes
- Leer un objeto de estado muy arriba en el árbol, de modo que un cambio pequeño recompone toda la pantalla.
- Crear en cada composición una lambda nueva que captura estado inestable y anular la omisión.
- Usar remember sin claves para un valor que depende de entradas cambiantes y mostrar datos obsoletos.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.