Ciclo de vida en el desarrollo móvil: qué es, qué etapas tiene y cómo funciona

Autor: IT Sectr Publicado: 2026-03-02 Tiempo de lectura: 9 min

El ciclo de vida de una aplicación móvil determina cómo se comporta al iniciarse, minimizarse, volver del fondo y cerrarse. En este artículo analizaremos App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle y LifecycleOwner. Comprender estos procesos es fundamental para prevenir fugas de memoria, pérdida de datos y un funcionamiento incorrecto de la aplicación. Más detalles en la documentación oficial de Android Activity Lifecycle.

Puntos clave

  • Activity Lifecycle (Android) incluye 7 métodos: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) se llama en orden: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle tiene 5 estados: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle está vinculado a Activity pero tiene sus propios métodos: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) permite suscribirse a eventos del ciclo de vida mediante LifecycleObserver

Ciclo de vida de la aplicación (App Lifecycle)

Antes de analizar el ciclo de vida de pantallas individuales, es importante entender el ciclo de vida de toda la aplicación. En iOS, la aplicación pasa por cinco estados: Not Running (no ejecutada), Inactive (en segundo plano, no recibe eventos), Active (activa), Background (en segundo plano, ejecutando código) y Suspended (en segundo plano, código suspendido). Estos estados se gestionan en AppDelegate mediante los métodos applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground y applicationWillTerminate.

En Android, el equivalente es el Application Lifecycle, que se rastrea a través de la interfaz Application.ActivityLifecycleCallbacks. Sin embargo, Android se centra más en el ciclo de vida de una Activity — una pantalla individual de la aplicación. Esto se debe a que una aplicación Android puede constar de múltiples Activities, cada una con su propio ciclo.

El enfoque moderno en Android es usar ProcessLifecycleOwner de la librería lifecycle-process. Permite rastrear el estado de todo el proceso sin estar vinculado a una Activity específica. En iOS, se usa UISceneDelegate (desde iOS 13) o AppDelegate para rastrear el estado de la aplicación. SceneDelegate maneja múltiples ventanas (multiwindow) en iPad. Comprender el App Lifecycle es especialmente importante para IT Sectr al desarrollar aplicaciones con sincronización en segundo plano, streaming y llamadas VoIP.

Activity Lifecycle en Android

Activity es el componente básico de una aplicación Android que representa una pantalla. Activity tiene un ciclo de vida claramente definido gestionado por el sistema operativo en respuesta a acciones del usuario y eventos del sistema (rotación de pantalla, llamada entrante, poca memoria).

Método Descripción Qué hacer
onCreateSe llama una vez al crear la ActivityInicialización de UI, findViewById, configuración de ViewModel
onStartLa Activity se vuelve visibleIniciar animaciones, registrar BroadCastReceiver
onResumeLa Activity obtiene el foco de entradaIniciar cámara, sensores, animaciones
onPauseLa Activity pierde el foco (parcialmente visible)Guardar borradores, detener animaciones
onStopLa Activity no es visibleLiberar recursos, detener actualizaciones
onDestroyLa Activity se destruyeLimpiar todas las referencias, cancelar suscripción de LiveData
onRestartSe llama antes de onStart después de onStopReinicialización

Importante: onSaveInstanceState se llama antes de onStop para guardar el estado temporal. La restauración ocurre en onCreate mediante Bundle savedInstanceState o mediante SavedStateHandle en ViewModel. Sin un manejo adecuado del ciclo de vida, la aplicación perderá todos los datos no guardados al rotar la pantalla.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("draft", draftText)
    }
    override fun onDestroy() {
        super.onDestroy()
        // Отписка от всех подписок
    }
}

Activity Lifecycle en Jetpack Compose

En Jetpack Compose, el ciclo de vida de Activity permanece sin cambios, pero Compose proporciona herramientas adicionales: Lifecycle-aware composition mediante LifecycleOwner, efectos LifecycleEventEffect y DisposableEffect para la limpieza automática de recursos al destruirse.

Fragment Lifecycle en detalle

Fragment en Android vive dentro de una Activity y tiene su propio ciclo de vida, que se superpone parcialmente con Activity pero añade nuevos métodos. Los Fragments pueden agregarse, reemplazarse y eliminarse sin destruir la Activity, lo que los hace más flexibles pero también más complejos.

Métodos clave del Fragment Lifecycle: onAttach — Fragment adjuntado a Activity (primera llamada); onCreate — inicialización de datos; onCreateView — creación de View; onViewCreated — View creada, se puede configurar la UI; onStart — Fragment visible; onResume — Fragment en foco; onPause — Fragment pierde el foco; onStop — Fragment no visible; onDestroyView — View destruida; onDestroy — Fragment destruido; onDetach — Fragment desvinculado de Activity.

Diferencia clave con Activity: onCreateView y onDestroyView pueden llamarse varias veces (por ejemplo, al cambiar de TabLayout), mientras que onCreate se llama una sola vez. Por consiguiente, la inicialización de la View debe hacerse en onViewCreated, no en onCreateView. Los recursos relacionados con la View (como los adaptadores de RecyclerView) deben limpiarse en onDestroyView.

ViewController Lifecycle en iOS

UIViewController es la clase base para gestionar pantallas en iOS. Su ciclo de vida consiste en una secuencia de métodos que UIKit llama automáticamente. Comprender este ciclo es fundamental para la correcta inicialización de la UI, la gestión de datos y la memoria.

Método Cuándo se llama Uso típico
loadViewCuando el View Controller carga su jerarquía de ViewInicialización personalizada sin storyboard
viewDidLoadDespués de cargar la View en memoria (una vez)Configuración de UI, carga de datos iniciales
viewWillAppearAntes de que la View aparezca en pantallaActualizar datos, suscribirse a notificaciones
viewDidAppearDespués de que la View aparezca en pantallaIniciar animaciones, iniciar animaciones de seguimiento
viewWillDisappearAntes de que la View desaparezca de la pantallaGuardar estado, cancelar suscripción de notificaciones
viewDidDisappearDespués de que la View desaparezca de la pantallaDetener animaciones, liberar recursos
deallocCuando se destruye el View ControllerLiberar todos los recursos

Importante: viewDidLoad se llama solo una vez en la vida del View Controller. Para actualizar datos en cada aparición, use viewWillAppear. Si se suscribe a NotificationCenter en viewWillAppear, asegúrese de cancelar la suscripción en viewDidDisappear para evitar fugas de memoria.

SwiftUI Lifecycle

SwiftUI gestiona el ciclo de vida de las Views mediante estructuras View. En lugar de métodos callback, SwiftUI usa los modificadores onAppear y onDisappear. Para estados globales de la aplicación, se usa el App Lifecycle a través de los protocolos App y Scene. SwiftUI gestiona automáticamente la creación y destrucción de Views basándose en el estado, lo que simplifica el desarrollo pero requiere comprender la identidad y el tiempo de vida de las Views.

swift
struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("View появилась")
            }
            .onDisappear {
                print("View исчезла")
            }
    }
}

LifecycleOwner y LifecycleObserver en Android

LifecycleOwner es una interfaz de Android Architecture Components que marca un objeto que tiene un ciclo de vida (Activity, Fragment). LifecycleObserver es una interfaz que permite a un objeto suscribirse a eventos de LifecycleOwner. Juntos forman la base de la gestión reactiva del ciclo de vida en el desarrollo moderno de Android.

En lugar de llamar métodos explícitamente en onStart/onStop, se recomienda usar DefaultLifecycleObserver (reemplazo del obsoleto LifecycleObserver con anotaciones @OnLifecycleEvent). Este es el enfoque promovido por Google para ViewModel y otros componentes que deben reaccionar al ciclo de vida sin tener referencias directas a Activity o Fragment.

kotlin
class MyObserver : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        // Подписка на обновления
    }
    override fun onStop(owner: LifecycleOwner) {
        // Отписка
    }
}

En IT Sectr, usamos LifecycleOwner en todos los proyectos de Android. ViewModel se suscribe al LifecycleOwner de Activity mediante viewModelScope y lifecycleScope, lo que garantiza la cancelación automática de corutinas cuando se destruye la Activity. Esto previene fugas de memoria y hace que el código sea más limpio y seguro.

Preguntas frecuentes

¿Qué estados atraviesa una Activity en Android?

Activity pasa por seis estados: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

¿En qué orden se llaman los métodos del ViewController Lifecycle en iOS?

Orden: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad se llama una vez.

¿Qué es LifecycleOwner en Android?

LifecycleOwner es un componente de Android Architecture Components que posee el ciclo de vida de una Activity o Fragment. Permite suscribirse a eventos mediante LifecycleObserver.

¿Qué estados tiene el App Lifecycle en iOS?

La aplicación iOS pasa por cinco estados: Not Running, Inactive, Active, Background, Suspended. Las transiciones se gestionan mediante UIApplicationDelegate.

¿Qué es Saved State en Android?

Saved State es el mecanismo de Android para preservar el estado de Activity/Fragment al rotar la pantalla o recrear el proceso. Utiliza onSaveInstanceState y SavedStateHandle.

Resumen

  • Activity Lifecycle en Android (onCreate → onDestroy) — la base de la gestión del estado de la pantalla
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — la clave para el correcto funcionamiento de UIKit
  • Fragment Lifecycle es más complejo que Activity debido a onAttach/onDetach y onCreateView/onDestroyView
  • LifecycleOwner (Android) permite la suscripción reactiva a eventos sin fugas de memoria
  • App Lifecycle gestiona el estado de toda la aplicación (Active, Background, Suspended)
  • SwiftUI usa onAppear y onDisappear en lugar de los métodos tradicionales de ViewController
  • El manejo adecuado del ciclo de vida previene hasta el 80% de los fallos típicos en aplicaciones móviles

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto