API del ciclo di vita dell'applicazione

Il ciclo di vita di un'applicazione si riferisce ai possibili stati e transizioni in cui può trovarsi un'applicazione dal momento in cui viene avviata fino al suo termine. Il ciclo di vita di un'applicazione BlackBerry® è semplice: viene avviata, eseguita e terminata. Durante lo stato di esecuzione, la maggior parte delle applicazioni ricevono ed elaborano gli eventi e aggiornano l'interfaccia utente di conseguenza.

Tutte le applicazioni presentano una classe di applicazione derivata da Application o UiApplication. Se si desidera creare un'applicazione con un'interfaccia utente, l'applicazione deve estendere UiApplication. In caso contrario, l'applicazione deve estendere Application.

Avvio in corso

Un'applicazione BlackBerry può essere avviata in diversi modi:

  • Facendo clic su un'icona nella schermata iniziale.
  • Il sistema avvia automaticamente l'applicazione quando viene avviato lo smartphone.
  • Un'altra applicazione avvia l'applicazione.
  • Il sistema avvia l'applicazione all'ora pianificata.

In esecuzione

Indipendentemente dalla modalità di avvio di un'applicazione, Gestione applicazioni è responsabile dell'avvio del processo in cui viene eseguita l'applicazione. La classe ApplicationManager consente alle applicazioni di interagire con Gestione applicazioni per eseguire attività, tra cui:

  • Eseguire un'applicazione immediatamente oppure a un'ora pianificata
  • Interagire con i processi, recuperando, ad esempio, gli ID per le applicazioni in primo piano
  • Inviare gli eventi globali al sistema

Gestione applicazioni avvia un'applicazione ottenendo un nuovo processo e generando un thread all'interno di tale processo per richiamare uno dei punti di accesso dell'applicazione. Per molte applicazioni, il metodo main() della relativa classe di applicazione è l'unico punto di accesso richiamato. Tuttavia, è possibile configurare più punti di accesso per un'applicazione per consentire di avviare l'applicazione in diversi modi. Ad esempio, se l'applicazione consente di creare un nuovo documento, potrebbe essere necessario fornire agli utenti due icone su cui poter fare clic per avviare l'applicazione. Gli utenti potrebbero fare clic su un'icona per aprire l'applicazione nella schermata iniziale e sull'altra icona per aprire l'applicazione nella schermata richiesta per creare un nuovo documento.

I descrittori di applicazione sono gruppi di dati relativi a un'applicazione. A una singola applicazione può essere associato più di un descrittore applicazione. Un'applicazione con più punti di accesso dispone di un descrittore di applicazione corrispondente a ciascuno dei punti di accesso. La classe ApplicationDescriptor consente di utilizzare i descrittori di applicazione.

L'ambiente operativo BlackBerry è multi-thread, ossia consente di eseguire più applicazioni simultaneamente. Supporta la trasmissione degli eventi a più applicazioni e l'esecuzione di thread in background.

Il thread evento è l'unico thread che può elaborare gli eventi e aggiornare l'interfaccia utente dell'applicazione, pertanto non deve essere utilizzato per eseguire istruzioni che potrebbero non riuscire o richiedere molto tempo per il loro completamento. Per creare, ad esempio, una connessione di rete, è necessario generare e utilizzare un altro thread.

In alcune situazioni, potrebbe essere necessario aggiornare l'interfaccia utente da un thread non di evento. Tale operazione può essere eseguita in due modi.

  • È possibile utilizzare thread in background per accedere all'interfaccia utente tramite l'acquisizione del blocco evento per un breve periodo di tempo. Questa opzione è utile se è necessario eseguire un aggiornamento dell'interfaccia utente rapido o urgente. In questo caso, è necessario completare rapidamente l'aggiornamento dell'interfaccia utente richiesto e rilasciare il blocco. In caso contrario, l'applicazione smetterà di rispondere e potrebbe essere terminata dal sistema. Il blocco evento si acquisisce richiamando l'Application.getEventLock() sul thread di background e sincronizzare quest'oggetto per serializzare l'accesso all'interfaccia utente.

  • È possibile aggiungere un oggetto Runnable alla coda eventi. Questa opzione è preferibile se è accettabile un ritardo prima dell'esecuzione dell'attività. Avviare un evento sotto forma di oggetto che implementa Runnable. L'evento viene gestito dal thread evento poiché viene ricevuto dalla coda dei messaggi. Il thread evento elabora l'evento richiamando il relativo metodo run (). Per avviare gli eventi Runnable nella coda dei messaggi dell'applicazione, utilizzare il metodo invokeAndWait() o invokeLater().

In tal caso, non è consigliabile eseguire attività il cui completamento potrebbe richiedere molto tempo o che potrebbero bloccarsi. Se si utilizzano le chiamate libreria nell'attività, assicurarsi di conoscerle bene e utilizzarle solo se terminano rapidamente e non si bloccano.

Terminazione

Un modo per terminare un'applicazione consiste nel richiamare System.exit(), che fa terminare tutti i processi di BlackBerry JVM del chiamante e, di conseguenza, tutti i thread associati. In alternativa, è possibile terminare un'applicazione eliminando l'ultima schermata dallo stack di visualizzazione, operazione tramite la quale il metodo close() richiama System.exit().

Si consiglia di deregistrare manualmente tutti i listener registrati prima di terminare l'applicazione.

Poiché, in genere, il thread di invio evento viene avviato richiamando Application.enterEventDispatcher(), che non termina, l'applicazione deve fornire un metodo di terminazione. Le applicazioni che interagiscono con l'utente potrebbero fornire un gestore per una voce di menu Close e le applicazioni che non interagiscono con l'utente potrebbero terminare durante la gestione di un evento di sistema che rappresenta la loro ragione di esistenza.

Ulteriori informazioni sul ciclo di vita delle applicazioni

Argomento successivo: UI API
Argomento precedente: Introduzione a Java SDK

Le informazioni sono state utili? Inviateci i vostri commenti.