Desarrollador Android: pregunta de entrevista

¿Cómo funcionan los ViewModels con el ciclo de vida Android?

Un ViewModel conserva estado de pantalla ante cambios de configuración y se limpia al terminar su owner; debe exponer estado UI y lanzar trabajo en viewModelScope sin retener Activity ni Views.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Un ViewModel está acotado a un ViewModelStoreOwner como una Activity, un Fragment o una entrada del grafo de navegación. Cuando el sistema recrea la Activity por una rotación o un cambio de idioma, el store sobrevive y se devuelve la misma instancia de ViewModel, así que los datos cargados y el trabajo en curso no se pierden. Cuando el dueño termina definitivamente, corre onCleared y se cancela viewModelScope. El ViewModel expone el estado de UI como StateFlow o LiveData y recibe eventos; no debe referenciar Views, Activities ni Contexts que mueren en la recreación. La muerte del proceso es un caso aparte que se maneja con SavedStateHandle.

Ejemplo

Una pantalla de búsqueda guarda la consulta, los resultados y la bandera de carga en un StateFlow dentro del ViewModel, así que rotar el teléfono vuelve a pintar el mismo estado al instante en lugar de volver a pedirlo. La cadena de consulta también se escribe en SavedStateHandle para que, si el sistema mata el proceso en segundo plano, la pantalla restaure la consulta mientras los resultados se vuelven a pedir.

Errores frecuentes

  • Pasar un contexto de Activity al ViewModel y filtrar la Activity entre rotaciones.
  • Tratar el ViewModel como protección frente a la muerte del proceso y perder estado cuando la app se mata en segundo plano.
  • Observar un Flow en el ViewModel con un collect que nunca termina, en lugar de exponerlo a la UI con stateIn.

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.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Android