Anwendungslebenszyklus-APIs

Der Lebenszyklus einer Anwendung bezieht sich auf die möglichen Zustände und Übergänge, die eine Anwendung vom Start bis zur ihrer Beendigung durchlaufen kann. Der Lebenszyklus einer BlackBerry®-Anwendung ist einfach: sie startet, wird ausgeführt und beendet. Während der Ausführung empfangen und verarbeiten die meisten Anwendungen Ereignisse und aktualisieren ihre Benutzeroberfläche entsprechend.

Alle Anwendungen verfügen über eine Anwendungsklasse, die entweder von Application oder UiApplication abgeleitet ist. Wenn Sie eine Anwendung mit einer Benutzeroberfläche erstellen möchten, sollte Ihre Anwendung UiApplication erweitern. Andernfalls muss Ihre Anwendung Application erweitern.

Wird gestartet

Eine BlackBerry-Anwendung kann auf verschiedene Arten gestartet werden:

  • Ein Benutzer klickt auf ein Symbol auf dem Startbildschirm.
  • Das System startet die Anwendung automatisch, wenn das Smartphone startet.
  • Eine andere Anwendung startet die Anwendung.
  • Das System startet die Anwendung zu einem geplanten Zeitpunkt.

Aktiv

Der Application Manager ist unabhängig davon, wie eine Anwendung gestartet wird, für das Starten des Prozesses verantwortlich, in dem die Anwendung ausgeführt wird. Die ApplicationManager-Klasse ermöglicht Anwendungen, mit dem Application Manager zu interagieren, um Aufgaben auszuführen, darunter:

  • Ausführen einer Anwendung sofort oder zu einem bestimmten Zeitpunkt
  • Interagieren mit Prozessen, wie z. B. Abrufen der IDs für Vordergrundanwendungen
  • Veröffentlichen von globalen Ereignissen an das System

Der Application Manager startet eine Anwendung durch Abrufen eines neuen Prozesses und Erzeugen eines Threads innerhalb dieses Prozesses, um einen der Eingabepunkte der Anwendung anzurufen. Für viele Anwendungen ist die main()-Methode ihrer Anwendungsklasse der einzige Eingabepunkt, der aufgerufen wird. Sie können jedoch mehrere Eingabepunkte für eine Anwendung konfigurieren. Mehrere Eingabepunkte ermöglichen Benutzern, die Anwendung auf unterschiedliche Weise zu starten. Wenn Ihre Anwendung Benutzern beispielsweise ermöglicht, ein neues Dokument zu erstellen, könnten Sie Benutzern zwei Symbole bieten, auf die sie zum Starten der Anwendung klicken können. Benutzer könnten auf ein Symbol klicken, um die Anwendung im Startbildschirm zu öffnen, und auf das andere Symbol, um die Anwendung in dem Bildschirm zu öffnen, der zum Erstellen eines neuen Dokuments erforderlich ist.

Anwendungsdeskriptoren sind Datensets zu einer Anwendung. Eine einzelne Anwendung kann über mehrere zugewiesene Anwendungsdeskriptoren verfügen. Eine Anwendung, die mehrere Eingabepunkte hat, hat einen Anwendungsdeskriptor für jeden Eingabepunkt. Sie können die ApplicationDescriptor-Klasse verwenden, um mit Anwendungsdeskriptoren zu arbeiten.

Die BlackBerry-Betriebsumgebung ist eine Multithread-Umgebung. Sie ermöglicht Ihnen, mehrere Anwendungen gleichzeitig auszuführen. Sie unterstützt das Senden von Ereignissen an mehrere Anwendungen und das Ausführen von Hintergrund-Threads.

Der Ereignis-Thread ist der einzige Thread, der Ereignisse verarbeiten und die Benutzeroberfläche der Anwendung aktualisieren kann. Daher dürfen Sie keine Ausführungsanweisungen verwenden, die fehlschlagen könnten oder deren Durchführung lange Zeit in Anspruch nehmen kann. Wenn Sie zum Beispiel eine Netzwerkverbindung herstellen müssen, müssen Sie einen anderen Thread erzeugen und verwenden.

In gewissen Situationen müssen Sie die Benutzeroberfläche u. U. über einen Nichtereignis-Thread aktualisieren. Hierfür gibt es zwei Möglichkeiten.

  • Sie können durch kurzfristiges Erlangen der Ereignissperre Hintergrund-Threads verwenden, um auf die Benutzeroberfläche zuzugreifen. Diese Option ist nützlich, wenn Sie ein schnelles oder dringendes Update der Benutzeroberfläche ausführen müssen. In diesem Fall müssen Sie das erforderliche Update der Benutzeroberfläche schnell abschließen und die Sperre aufheben. Andernfalls bleibt Ihre Anwendung hängen und wird möglicherweise schließlich vom System beendet. Sie erhalten die Ereignissperre durch Anrufen von Application.getEventLock() auf dem Hintergrund-Thread, und synchronisieren anschließend dieses Objekt, um den Zugriff auf die Benutzeroberfläche zu serialisieren.

  • Sie können der Ereigniswarteschlange ein ausführbares Objekt hinzufügen. Diese Option ist vorzuziehen, wenn eine Verzögerung vor Ausführung Ihrer Aufgabe akzeptabel ist. Sie injizieren ein Ereignis in Form eines Objekts, das Runnable implementiert. Das Ereignis wird vom Ereignis-Thread verarbeitet, wenn es von der Nachrichtenwarteschlange empfangen wird. Der Ereignis-Thread verarbeitet das Ereignis durch Anrufen seiner run()-Methode. Um ausführbare Ereignisse in die Nachrichtenwarteschlange Ihrer Anwendung zu injizieren, verwenden Sie die invokeAndWait()- oder die invokeLater()-Methode.

In jeden Fall sollten Sie keine Aufgaben ausführen, die lange Zeit in Anspruch nehmen oder zu einer Blockierung führen können. Wenn Sie Bibliotheksaufrufe innerhalb Ihrer Aufgabe verwenden, müssen Sie sehr gut mit diesen vertraut sein und dürfen sie nur verwenden, wenn sie schnell abgeschlossen werden können und nicht zu einer Blockierung führen.

Beenden

Eine Möglichkeit, eine Anwendung zu beenden, besteht darin, System.exit() aufzurufen. Dadurch beendet die BlackBerry JVM alle Prozesse des Aufrufers und daher alle zugewiesenen Threads. Alternativ können Sie eine Anwendung durch Entfernen des letzten Bildschirms aus dem Anzeige-Stapel beenden. Daraufhin ruft die close()-Methode System.exit() auf.

Es ist eine gute Angewohnheit, die Registrierung beliebiger registrierter Listener manuell aufzuheben, bevor Sie die Anwendung beenden.

Da Sie den Ereignis-Dispatcher-Thread in der Regel durch Aufrufen von Application.enterEventDispatcher() starten, die nicht beendet wird, muss Ihre Anwendung eine Möglichkeit zum Beenden bieten. Anwendungen, die mit dem Benutzer interagieren, könnten einen Handler für einen Close-Menüeintrag bieten, und Anwendungen, die nicht mit dem Benutzer interagieren, könnten bei bestimmten Systemereignissen beendet werden, die den Grund ihrer Existenz darstellen.

Mehr Informationen zum Anwendungslebenszyklus

Nächstes Thema: Benutzeroberflächen-API
Vorheriges Thema: Einführung in das Java SDK

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.