Ciclo de vida de la aplicación

Ciclo de vida de la aplicación

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

En este tema se describe el ciclo de vida de una aplicación de Windows en tiempo de ejecución, desde el momento en que se implementa hasta su eliminación. Al iniciar, suspender y reanudar la aplicación de manera adecuada, ofrecerás a tus clientes la mejor experiencia posible con la aplicación.

Estado de ejecución de la aplicación

Esta ilustración representa las transiciones entre los estados de ejecución de la aplicación. En las siguientes secciones se describen estos estados y eventos. Para obtener más información sobre cada transición de estado y cómo debe reaccionar la aplicación, consulta la referencia relativa a la enumeración ApplicationExecutionState.

Diagrama de estados que muestra las transiciones entre los estados de ejecución de la aplicación

Implementación

Para que una aplicación se active de alguna forma, primero se debe implementar. La implementación básica se realiza cuando un usuario instala la aplicación o al usar Visual Studio para compilar y ejecutar la aplicación localmente durante el desarrollo y las pruebas. Para obtener más información sobre este tema y los escenarios de implementación avanzada, consulta Implementación y paquetes de la aplicación.

Inicio de la aplicación

Una aplicación se inicia cada vez que el usuario la activa y cuando el proceso de la aplicación se encontraba anteriormente en el estado NotRunning. Una aplicación puede estar en el estado NotRunning porque no se ha iniciado nunca, porque se estaba ejecutando y se ha bloqueado o porque se ha suspendido pero no se ha podido mantener en memoria y, por tanto, el sistema la ha finalizado.

Cuando se inicia una aplicación, Windows muestra una pantalla de presentación. Para configurar esta pantalla de presentación, consulta el tema sobre "Cómo agregar una pantalla de presentación" (HTML o XAML).

Mientras aparece la pantalla de presentación, el código de la aplicación se asegura de que la aplicación esté lista para mostrar la interfaz de usuario al usuario. Las tareas principales de una aplicación son registrar controladores de eventos y configurar las opciones de interfaz de usuario personalizadas necesarias para cargar la página inicial. Estas tareas solo deberían tardar unos pocos segundos. Otras actividades que la aplicación necesite, como pedir datos de la red o recuperar grandes cantidades de datos del disco, se deberán llevar a cabo aparte de la activación. Una aplicación puede usar su propia interfaz de usuario de carga personalizada o una pantalla de presentación ampliada mientras espera a que estas operaciones de larga ejecución finalicen. Consulta "Cómo ampliar la pantalla de presentación"(HTML o XAML) y la Muestra de pantalla de presentación para obtener información. Cuando la aplicación termina de activarse, entra en el estado Running y desaparece la pantalla de presentación (y se desactivan todos sus recursos y objetos). Mostrar una ventana, volver del controlador de activación y completar un aplazamiento son maneras específicas en que una aplicación completa la activación. Para obtener más información, consulta el tema sobre "Cómo activar una aplicación" (HTML o XAML).

Activación de la aplicación

Los usuarios pueden activar una aplicación mediante diversos contratos y extensiones. Para participar en la activación, la aplicación debe registrarse para recibir el evento WinJS activated (HTML) o invalidar el método OnActivated (XAML). (Para HTML, WebUIApplication.activated es otro evento que puedes controlar para la activación.)

El código de activación de la aplicación puede comprobar por qué se activó y si ya se encontraba en estado Running. Las aplicaciones pueden activarse mediante cualquiera de estos tipos de activación:

Tipo de activación Descripción
archivo almacenado en cachéEl usuario quiere guardar un archivo para el que la aplicación proporciona administración de contenido.
cámaraEl usuario desea capturar fotos o vídeo de una cámara conectada.
selector de contactosEl usuario desea seleccionar contactos.
dispositivoEl usuario quiere que la aplicación se encargue de la Reproducción automática.
archivoLa aplicación de un usuario inició un archivo de un tipo compatible con los registrados por esta aplicación.
selector de apertura de archivosEl usuario quiere seleccionar carpetas o archivos proporcionados por la aplicación.
selector de almacenamiento de archivosEl usuario quiere guardar un archivo y ha seleccionado la aplicación.
inicioEl usuario inició la aplicación o punteó un cuadro de contenido.
tarea de impresiónEl usuario quiere que la aplicación se encargue de las tareas de impresión.
protocoloLa aplicación de un usuario inició una dirección URL con un protocolo compatible con los registrados por esta aplicación.
búsquedaEl usuario quiere realizar búsquedas con la aplicación.
destino de uso compartidoEl usuario quiere que la aplicación sea el destino de una operación de uso compartido.

 

Las aplicaciones creadas para Windows 8.1 y versiones posteriores pueden activarse con cualquiera de las opciones anteriores o se pueden activar con estos tipos de activación.

Tipo de activación Descripción
agregar citaEl usuario quiere agregar una cita al calendario. También compatible con Windows Phone.
quitar citaEl usuario quiere quitar una cita del calendario. También compatible con Windows Phone.
reemplazar citaEl usuario quiere reemplazar una cita del calendario. También compatible con Windows Phone.
mostrar periodoEl usuario quiere mostrar un periodo de tiempo específico en el calendario. También compatible con Windows Phone.
llamada a contactoEl usuario quiere llamar a un contacto.
mapa de contactoEl usuario quiere obtener la ubicación en el mapa de un contacto.
mensaje a contactoEl usuario quiere enviar un mensaje a un contacto.
publicación de contactoEl usuario quiere publicar un contacto.
videollamada a contactoEl usuario quiere realizar una videollamada a un contacto.
llamada de pantalla de bloqueoEl usuario quiere aceptar una llamada de la pantalla de bloqueo.
inicio restringidoEl usuario inició la aplicación restringida.

 

Las aplicaciones de Windows Phone se pueden activar con estos tipos.

Tipo de activación Descripción
VoiceCommand La aplicación se activó como resultado de un comando de voz.
PickerReturned La aplicación se activó tras completar un selector.
WalletAction La aplicación se activó para realizar una operación de Wallet.
PickFileContinuation La aplicación se activó tras suspenderla para una operación del selector de archivos.
PickSaveFileContinuation La aplicación se activó tras suspenderla para una operación del selector para guardar archivos.
PickFolderContinuation La aplicación se activó tras suspenderla para una operación del selector de carpetas.
WebAuthenticationBrokerContinuation La aplicación se activó tras suspenderla para una operación del agente de autenticación web.

 

La aplicación puede usar la activación para restaurar datos ya guardados en caso de que el sistema operativo cierre la aplicación y el usuario la vuelva a iniciar posteriormente. Windows puede finalizar la aplicación después de que se haya suspendido por diversos motivos. Puede que el usuario la haya cerrado manualmente o haya cerrado la sesión, o bien que el sistema no disponga de suficientes recursos. En caso de que el usuario inicie la aplicación después de que Windows la haya finalizado, la aplicación recibirá un evento activated (HTML) o una devolución de llamada Application.OnActivated (XAML) y el usuario verá la pantalla de presentación de la aplicación hasta que esta se active. Puedes usar este evento para averiguar si la aplicación necesita restaurar los datos que guardó cuando se suspendió por última vez, o bien si debes cargar los datos predeterminados de la aplicación. Dado que la pantalla de presentación se encuentra visible, el código de la aplicación puede dedicar algún tiempo al procesamiento para realizar esto sin necesidad de que el usuario experimente ningún retraso aparente, sin embargo las cuestiones mencionadas anteriormente acerca de las operaciones de larga ejecución también se aplican si reinicias o continúas. Los datos del evento activated/OnActivated incluyen una propiedad PreviousExecutionState que indica el estado en el que la aplicación se encontraba antes de activarse. Esta propiedad es uno de los valores de la enumeración ApplicationExecutionState:

Motivo de finalizaciónValor de la propiedad PreviousExecutionState Medida necesaria
Finalizada por el sistema (por ejemplo, debido a restricciones de recursos)Terminated Restaurar los datos del sistema
Cerrado por el usuario o proceso finalizado por el usuarioClosedByUser Iniciar la aplicación con los datos predeterminados
La aplicación finalizó de forma inesperada o no se ha ejecutado durante la sesión del usuario actualNotRunningIniciar la aplicación con los datos predeterminados

 

Nota  La sesión del usuario actual se basa en el inicio de sesión de Windows. Siempre y cuando el usuario actual no haya cerrado la sesión explícitamente o apagado el equipo, o bien Windows no se haya reiniciado por otros motivos, la sesión del usuario actual persiste durante los eventos como la autenticación de pantalla de bloqueo y el cambio de usuario, entre otros.
 

PreviousExecutionState también puede reflejar los valores Running o Suspended, si bien en estos casos la aplicación no ha finalizado previamente, con lo cual no será necesario que restaures los datos.

Nota  

Si inicias sesión en el equipo con la cuenta de Administrador, no podrás activar ninguna de las aplicaciones de Windows en tiempo de ejecución.

Para obtener más información, consulta el tema sobre extensiones de la aplicación.

OnActivated frente a las activaciones específicas de una aplicación XAML

Para el modelo de activación XAML y la clase Application, el método OnActivated es el medio para controlar todos los tipos de activación posibles. Sin embargo, es más habitual usar distintos métodos para controlar los tipos de activación más comunes y usar OnActivated solo como método de reserva para los tipos de activación menos comunes. Por ejemplo, Application tiene un método OnLaunched que se invoca como una devolución de llamada siempre que ActivationKind sea Launch, y esta es la activación típica de la mayoría de las aplicaciones. Hay más de 6 métodos On* para las activaciones específicas: OnCachedFileUpdaterActivated, OnFileActivated, OnFileOpenPickerActivated, OnFileSavePickerActivated, OnSearchActivated, OnShareTargetActivated. Las plantillas de inicio de una aplicación XAML tienen una implementación para OnLaunched y un controlador para Suspending y ambas incorporan los métodos de la clase SuspensionManager que viene predefinida en cada plantilla. La descripción de lo que hace SuspensionManager queda fuera del alcance de este tema; para obtener más información, consulta plantillas de proyecto de C#, VB y C++ para aplicaciones.

Suspensión de aplicaciones

Se puede suspender una aplicación cuando el usuario cambia a otra aplicación o cuando el dispositivo entra en estado de bajo consumo. La mayoría de las aplicaciones se suspenden cuando el usuario cambia a otra aplicación.

Cuando el usuario pasa una aplicación a segundo plano, Windows espera unos segundos para ver si el usuario vuelve inmediatamente a la aplicación. Si el usuario no vuelve durante este intervalo de tiempo, Windows suspende la aplicación.

Si una aplicación ha registrado un controlador de eventos para el evento WinJS checkpoint (para HTML) o el evento Application.Suspending (para XAML), se llamará a este código inmediatamente antes de que se suspenda la aplicación. Puedes usar el controlador de eventos para guardar datos de aplicación y de usuario relevantes. Te recomendamos que uses las API de datos de aplicación para este fin, ya que así te aseguras de que finalizan el trabajo antes de que la aplicación entre en estado Suspended. Para obtener más información, consulta Tener acceso a datos de aplicaciones con Windows en tiempo de ejecución. Conviene que liberes recursos exclusivos e identificadores de archivos para que otras aplicaciones puedan tener acceso a ellos cuando la aplicación no los esté usando.

En general, la aplicación debe guardar su estado y liberar sus recursos exclusivos e identificadores de archivos inmediatamente cuando se controle el evento de suspensión, y el código no debería tardar menos de un segundo en completarse. Si una aplicación no vuelve del evento de suspensión transcurridos cinco segundos en Windows y entre uno y diez segundos en Windows Phone, Windows da por supuesto que la aplicación ha dejado de responder y la finaliza.

Windows intenta mantener la mayor cantidad posible de aplicaciones suspendidas en la memoria. Al mantener estas aplicaciones en la memoria, se garantiza que los usuarios puedan cambiar de manera rápida y confiable entre aplicaciones suspendidas. No obstante, si no hay recursos suficientes para mantener una aplicación en la memoria, Windows la puede finalizar. Las aplicaciones individuales no reciben notificaciones cuando se cierran, por lo que la única oportunidad de guardar los datos de la aplicación es durante la suspensión. Cuando una aplicación determina que está activada tras cerrarse, debe cargar los datos de aplicación que se guardaron durante la suspensión para que la aplicación funcione igual que antes de suspenderse.

Hay algunos escenarios de aplicación donde la aplicación debe seguir ejecutándose para completar tareas en segundo plano. Por ejemplo, la aplicación puede seguir reproduciendo audio en segundo plano; para obtener más información, consulta "Cómo reproducir audio en segundo plano" (HTML o XAML). Además, las operaciones de transferencia en segundo plano prosiguen aun cuando la aplicación se ha suspendido o finalizado; para obtener más información, consulta "Cómo descargar un archivo" (HTML o XAML).

Para obtener instrucciones, consulta el tema de instrucciones para suspender y reanudar aplicaciones.

Por obtener código de ejemplo, consulta "Cómo suspender una aplicación" (HTML o XAML).

Visibilidad para las aplicaciones

Tu aplicación dejará de estar visible cuando el usuario cambie a otra aplicación, aunque permanecerá en estado Running hasta que Windows la suspenda. Si el usuario cambia a otra aplicación pero vuelve a la tuya y la activa antes de que se pueda suspender, permanecerá en estado Running.

La aplicación no recibe un evento de activación cuando su visibilidad cambia, puesto que sigue en ejecución. Windows cambia entre esta y otras aplicaciones según sea necesario. Si la aplicación tiene que realizar alguna acción cuando un usuario cambia de aplicación y vuelve, puede controlar el evento visibilitychange (para HTML) o el evento Window.VisibilityChanged (para XAML).

El evento de visibilidad no está serializado con los eventos de suspensión/reanudación o activación. No esperes que estos eventos se produzcan en un orden establecido concreto.

Reanudación de una aplicación

Una aplicación suspendida se reanuda cuando el usuario vuelve a ella o cuando el dispositivo sale de un estado de bajo consumo.

Consulta ApplicationExecutionState para ver los estados en los que la aplicación puede estar cuando se reanuda. Cuando una aplicación se reanuda desde el estado Suspended, entra en estado Running y continúa en el punto en el que estaba en el momento de la suspensión. No se pierden datos de la aplicación, siempre y cuando se hayan guardado en la memoria. En consecuencia, la mayor parte de las aplicaciones no necesita hacer nada cuando se reanudan. No obstante, la aplicación podría haber estado suspendida durante horas o incluso días. Por tanto, si la aplicación tiene contenido o conexiones de red que puedan haber quedado obsoletos, se deberán actualizar al reanudar. Si una aplicación ha registrado un controlador de eventos para el evento WebUIApplication.resuming (HTML) o el evento Application.Resuming (XAML), se llama a este controlador de eventos cuando la aplicación se reanuda desde el estado Suspended. Puedes actualizar el contenido y los datos de la aplicación con este controlador de eventos.

Nota  

Las aplicaciones HTML normalmente no necesitan controlar resuming específicamente, porque activated se activa en las mismas circunstancias. Puedes usar la información ActivationKind de los datos del evento activated para determinar si la aplicación se reanuda; este patrón se muestra en el archivo default.js para iniciar las plantillas del proyecto.

 

Si se activa una aplicación suspendida para que participe en un contrato entre aplicaciones o una extensión, recibirá primero el evento Resuming y después el evento Activated.

Cuando se suspende una aplicación, no recibe eventos de red para los que no esté registrada. Estos eventos no se colocan en la cola; simplemente se pierden. Por ello, la aplicación debe comprobar el estado de red cuando se reanude.

Para obtener instrucciones, consulta el tema de instrucciones para suspender y reanudar aplicaciones.

Por obtener código de ejemplo, consulta "Cómo reanudar una aplicación" (HTML o XAML).

Nota  En las aplicaciones de la Tienda de Windows Phone, se llama a OnLaunched cada vez que el usuario inicia la aplicación desde el icono Inicio o la lista de aplicaciones, aunque la aplicación esté suspendida en memoria en este momento. En Windows, al iniciar una aplicación suspendida desde el icono Inicio o la lista de aplicaciones no se llama a este método.

Cierre de la aplicación

Por lo general, no es necesario que los usuarios cierren las aplicaciones, sino que pueden dejar que Windows se encargue de ello. No obstante, los usuarios pueden decidir cerrar una aplicación mediante el gesto de cerrar, presionando Alt y F4 en Windows o mediante el conmutador de tareas en Windows Phone. No incluyas en tu aplicación ningún elemento de interfaz de usuario que permita que los usuarios la cierren, ya que de lo contrario no pasará el proceso de certificación de la Tienda Windows.

No hay un evento especial que indique que el usuario ha cerrado una aplicación.

Después de que el usuario haya cerrado una aplicación, se suspende y finaliza. A continuación, pasa al estado NotRunning.

En Windows 8.1 y versiones posteriores, una vez que el usuario cierra la aplicación, esta se quita de la pantalla y de la lista de cambio, pero no finaliza explícitamente.

Nota  Si tu aplicación depende del comportamiento de cierre por parte del usuario de Windows 8, puedes habilitar este comportamiento en la aplicación cuando la actualices a Windows 8.1. Para habilitar el comportamiento de cierre por parte del usuario de Windows 8, configura tu aplicación de Windows 8.1 de forma que finalice cuando la última ventana se cierre con la propiedad ApplicationView.TerminateAppOnFinalViewClose.

Si una aplicación ha registrado un controlador de eventos para el evento Suspending, se llamará a este cuando se suspenda la aplicación. Puedes usar este controlador de eventos para guardar datos de aplicación y de usuario relevantes en un almacenamiento persistente.

Comportamiento de cierre por parte del usuario:  Te recomendamos que decidas cómo debe comportarse la aplicación cuando se active después de que el usuario la haya cerrado. Puede que te sea indiferente que la haya finalizado Windows o el usuario. Si la aplicación debe hacer algo distinto cuando la cierra el usuario que cuando la cierra Windows, puedes usar el controlador de eventos de activación para determinar si la finalizó Windows o el usuario. Consulta las descripciones de los estados ClosedByUser y Terminated en la referencia relativa a la enumeración ApplicationExecutionState. Si deseas mantener una aplicación para Windows 8, ten en cuenta que el control para ClosedByUser es potencialmente diferente para una aplicación de Windows 8.1.

Te recomendamos que las aplicaciones no se cierren automáticamente mediante programación a menos que sea absolutamente necesario. Por ejemplo, si una aplicación detecta una pérdida de memoria, se puede cerrar para preservar la seguridad de los datos personales del usuario. Cuando una aplicación se cierra mediante programación, el sistema considera que se ha bloqueado.

Bloqueo de la aplicación

Es preciso que las aplicaciones sigan la experiencia de bloqueo del sistema, que consiste básicamente en volver a la pantalla Inicio. La experiencia de bloqueo del sistema está pensada para que los usuarios vuelvan a lo que estaban haciendo lo antes posible, de modo que no es aconsejable que se abra un cuadro de diálogo de advertencia o cualquier otro tipo de notificación que provoque más retraso. El hecho de que la aplicación desaparezca debe ser suficiente de por sí para que el usuario sepa que algo no ha ido bien.

Si la aplicación se bloquea, deja de responder o genera una excepción, Windows pedirá consentimiento al usuario para remitir un informe del problema a Microsoft. Microsoft te proporciona un subconjunto de datos de error en el informe del problema, de modo que puedas usarlo para mejorar la aplicación. Puedes consultar estos datos en la página Calidad de la aplicación en el panel.

Cuando el usuario activa una aplicación tras un bloqueo, su controlador de eventos de activación recibe un valor ApplicationExecutionState de NotRunning y debe mostrar su interfaz de usuario y datos iniciales. Después de un bloqueo, no uses de forma habitual la aplicación que usarías para Resuming con Suspended porque los datos pueden estar dañados; consulta Directrices para la suspensión y reanudación de la aplicación.

Eliminación de la aplicación

Cuando un usuario elimina la aplicación, esta se quita, junto con todos los datos locales. La eliminación de una aplicación no afecta a los datos del usuario que se han almacenado en ubicaciones comunes, como los archivos de las bibliotecas Documentos o Imágenes.

Ciclo de vida de aplicación y plantillas de proyecto de Visual Studio

Para las aplicaciones HTML o XAML, el código básico que es relevante para el ciclo de vida de la aplicación se proporciona en las plantillas de proyecto iniciales de Visual Studio. La aplicación básica controla la activación de inicio y muestra su interfaz de usuario principal, incluso antes de que hayas agregado tu propio código. Para obtener más información, consulta Plantillas de proyecto JavaScript para las aplicaciones de la Tienda o Plantillas de proyecto C#, VB y C++ para aplicaciones.

Principales API del ciclo de vida de la aplicación

Temas relacionados

Directrices para suspender y reanudar una aplicación
Muestra de activación, reanudación y suspensión de aplicaciones (JavaScript)

 

 

Mostrar:
© 2017 Microsoft