API de ciclo de vida de la aplicación

El ciclo de vida de una aplicación se refiere a los posibles estados y transiciones que atraviesa una aplicación desde el momento de su creación hasta su finalización. El ciclo de vida de una aplicación BlackBerry® es sencillo: lanzamiento, ejecución y finalización. Durante el estado de ejecución, la mayoría de las aplicaciones reciben y procesan eventos y actualizan su interfaz de usuario de forma correspondiente.

Todas las aplicaciones tienen una clase de aplicación derivada de Application o de UiApplication. Si quiere crear una aplicación con una IU, su aplicación debe ampliar UiApplication. De lo contrario, su aplicación deberá ampliar Application.

Iniciando

Una aplicación BlackBerry se puede iniciar de varias maneras:

  • El usuario hace clic en un icono en la pantalla de inicio.
  • El sistema inicia automáticamente la aplicación cuando el smartphone se enciende.
  • Otra aplicación la inicia.
  • El sistema inicia la aplicación a una hora programada.

En ejecución

Independientemente de cómo se inicie una aplicación, el Administrador de aplicaciones será el responsable de iniciar el proceso en el cual se ejecutará la aplicación. La clase ApplicationManager permite a las aplicaciones interactuar con el Administrador de aplicaciones para realizar tareas, incluidas:

  • Ejecutar una aplicación inmediatamente o a una hora específica.
  • Interactuar con procesos, por ejemplo, la recuperación de los ID de las aplicaciones en primer plano.
  • Publicar eventos globales en el sistema.

El Administrador de aplicaciones inicia una aplicación obteniendo un nuevo proceso y generando un subproceso dentro del mismo para llamar a uno de los puntos de entrada de la aplicación. Para muchas aplicaciones, el método main() de la clase de la aplicación es el único punto de entrada al que se llama. Sin embargo, puede configurar más de un punto de entrada para una aplicación. Si hay varios puntos de entrada, los usuarios podrán iniciar la aplicación de diversas maneras. Por ejemplo, si su aplicación permite a los usuarios crear un documento nuevo, es posible que desee proporcionar a los usuarios dos iconos en los que hacer clic para iniciar la aplicación. Los usuarios podrán hacer clic en uno de los iconos para abrir la aplicación en su pantalla de inicio y en el otro icono para abrir la aplicación en la pantalla necesaria para crear un documento nuevo.

Los descriptores de la aplicación son conjuntos de datos acerca de una aplicación. Una sola aplicación puede tener más de un descriptor asociado a dicha aplicación. Una aplicación con varios puntos de entrada tiene un descriptor de aplicación que se corresponde con cada uno de esos puntos de entrada. Puede utilizar la clase ApplicationDescriptor para trabajar con los descriptores de la aplicación.

El entorno operativo de BlackBerry consta de varios subprocesos. Le permite ejecutar varias aplicaciones de forma simultánea. Es compatible con la difusión de eventos a varias aplicaciones y con la ejecución de subprocesos en segundo plano.

El subproceso de eventos es el único subproceso que puede procesar eventos y actualizar la interfaz de usuario de la aplicación, así que no deberá utilizarlo para ejecutar instrucciones que puedan generar errores o tardar mucho tiempo en completarse. Si, por ejemplo, necesita establecer una conexión de red, debe generar y utilizar otro subproceso.

Es posible que se den situaciones en las que desee actualizar la interfaz de usuario a partir de un subproceso sin eventos. Existen dos posibilidades.

  • Puede utilizar subprocesos en segundo plano para acceder a la interfaz de usuario adoptando el bloqueo de eventos durante un breve período de tiempo. Esta opción es útil si debe realizar una actualización rápida o urgente de la IU. En este caso, debe completar rápidamente la actualización de la IU que requiere y liberar el bloqueo. De lo contrario, la aplicación perderá su capacidad de respuesta y es posible que el sistema la interrumpa finalmente. Adquiere el bloqueo de eventos llamando a Application.getEventLock() en el subproceso en segundo plano, y a continuación sincronizando este objeto para serializar el acceso a la IU.

  • Podrá agregar un objeto Runnable a la cola de eventos. Esta opción es preferible si es admisible experimentar una demora antes de que su tarea se ejecute. Inserte un evento en la forma de un objeto que implementa Runnable. El evento será administrado por el subproceso de eventos cuando sea recibido desde la cola de mensajes. El subproceso de eventos procesa el evento llamando a su método run(). Para insertar eventos Runnable en la cola de mensajes de su aplicación, utilice el método invokeAndWait() o el método invokeLater().

En cualquier caso, no deberá ejecutar tareas que consuman una gran cantidad de tiempo o que puedan bloquearse. Si utiliza llamadas de biblioteca dentro de su tarea, asegúrese de conocer su funcionamiento y utilícelas únicamente si se pueden implementar rápidamente y sin ningún tipo de bloqueo.

Interrupción

Una de las formas de interrumpir una aplicación consiste en invocar System.exit(), que hace que BlackBerry JVM ponga fin a todos los procesos del autor de la llamada y, como resultado, a todos los subprocesos asociados. De forma alternativa, puede interrumpir una aplicación sacando la última pantalla de la pila de visualización, esto hará que el método close() realice una llamada a System.exit().

Se recomienda eliminar manualmente el registro de cualquier servicio de escucha que haya registrado antes de interrumpir su aplicación.

Puesto que normalmente iniciará el subproceso del distribuidor de eventos llamando a Application.enterEventDispatcher(), que no finalizará, su aplicación deberá proporcionar una forma de interrupción. Las aplicaciones que interactúan con el usuario podrían proporcionar un controlador para el elemento de menú Close y las aplicaciones que no interactúan con el usuario podrían poner fin a la aplicación tras la gestión de algún evento del sistema que represente la razón para su existencia.

Más información sobre el ciclo de vida de las aplicaciones


¿Le ha resultado útil esta información? Envíenos sus comentarios.