Sobes.tech
Junior

¿Qué puedes contarme sobre el ciclo de vida de Activity en Android?

sobes.tech AI

Respuesta de la IA

El ciclo de vida de Activity es un conjunto de estados y transiciones entre ellos, por los que pasa cada instancia de Activity desde su creación hasta su destrucción. Está definido por un conjunto de métodos callback.

Los métodos callback principales del ciclo de vida:

  • onCreate(): Se llama cuando se crea por primera vez una Activity. Aquí se realiza la inicialización de la interfaz de usuario, el enlace de datos y otras acciones únicas.
  • onStart(): Se llama cuando la Activity se vuelve visible para el usuario, pero aún no ha recibido foco.
  • onResume(): Se llama cuando la Activity recibe foco y se vuelve activa. Aquí generalmente comienzan las animaciones y otras acciones interactivas.
  • onPause(): Se llama cuando la Activity pierde foco, pero aún es visible (por ejemplo, un diálogo semitransparente sobre ella). Aquí se deben detener las operaciones que consumen recursos.
  • onStop(): Se llama cuando la Activity ya no es visible para el usuario. Aquí se guardan los datos no guardados y se liberan recursos que ya no son necesarios.
  • onDestroy(): Se llama antes de que la Activity sea destruida. Aquí se liberan todos los recursos restantes.
  • onRestart(): Se llama después de onStop() cuando la Activity se vuelve a mostrar. Le sigue onStart().

Gráficamente, el ciclo de vida puede representarse así:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

También existen transiciones:

  • Created -> Started (después de onStart())
  • Started -> Resumed (después de onResume())
  • Resumed -> Paused (cuando pierde foco)
  • Paused -> Resumed (cuando recupera foco)
  • Paused -> Stopped (cuando se oculta completamente)
  • Stopped -> Destroyed (al finalizar la actividad)
  • Stopped -> Restarted -> Started (después de onRestart())

Es importante gestionar correctamente el estado de la Activity en estos métodos callback para evitar fugas de memoria y asegurar un comportamiento correcto de la aplicación al cambiar la configuración o alternar entre Activity. Para guardar el estado, se usa onSaveInstanceState() (antes de onStop()) y la restauración se realiza en onCreate() o onRestoreInstanceState() (después de onStart()).

Ejemplo de uso de onSaveInstanceState():

// Guardar estado
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Restaurar estado
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // Usar myData
    }
}