Kann man die gleiche Adobe AIR-App mehr als einmal ausführen?
Wenn Sie mit Adobe AIR entwickeln und sich über die Möglichkeit der Ausführung mehrerer Instanzen derselben Anwendung wundern, sind Sie nicht allein. Viele Entwickler stehen vor diesem Dilemma, insbesondere beim Versuch, Anwendungen zu verwalten, die verschiedene Datenströme anzeigen oder verarbeiten, wie z.B. Thumbnails von Fotostreams. In diesem Blogbeitrag werden wir dieses Problem im Detail betrachten und Klarheit darüber schaffen, ob es möglich ist, zwei Instanzen derselben Adobe AIR-Anwendung auszuführen.
Das vorliegende Problem
Stellen Sie sich vor, Sie haben ein Widget erstellt, das Thumbnails von mehreren Fotostreams anzeigt. Ihr Ziel ist es, mehrere Streams gleichzeitig zu betrachten. Allerdings sind Sie möglicherweise auf die frustrierende Einschränkung von Adobe AIR gestoßen, die die Fähigkeit einschränkt, dieselbe App mehrfach auszuführen.
Die Einschränkung erklärt
Laut der Dokumentation von Adobe:
„Es wird nur eine Instanz einer AIR-Anwendung gestartet. Wenn eine bereits laufende Anwendung erneut aufgerufen wird, sendet AIR ein neues Invoke-Ereignis an die laufende Instanz.“
Dies zeigt eindeutig an, dass Adobe AIR so konzipiert ist, dass es nur eine Instanz einer Anwendung startet, was bedeutet, dass, wenn Sie versuchen, dieselbe Anwendung erneut zu starten, stattdessen ein Ereignis für die vorhandene Instanz ausgelöst wird.
Verständnis des Invoke-Ereignisses
Was passiert also, wenn Sie versuchen, die Anwendung erneut auszuführen? Das Adobe AIR-Framework sendet ein “Invoke-Ereignis” an die derzeit laufende Anwendungsinstanz.
So handhaben Sie Invoke-Ereignisse
Um das Beste aus dieser Einschränkung herauszuholen, können Sie Ihre AIR-App so programmieren, dass sie auf diese Invoke-Ereignisse reagiert, indem Sie eine Logik implementieren, die ein neues Dokumentfenster oder ein ähnliches Fenster für jede neue Anfrage öffnet. Das bedeutet, dass, während mehrere unabhängige Instanzen nicht möglich sind, Sie dennoch zusätzliche Inhalte über die Benutzeroberfläche der vorhandenen Anwendung verwalten und anzeigen können.
So gehen Sie vor:
-
Hören Sie auf das Invoke-Ereignis:
- Richten Sie einen Ereignislistener in Ihrer AIR-Anwendung ein, um zu erkennen, wann ein Invoke-Ereignis auftritt.
-
Öffnen Sie neue Fenster oder Panels:
- Programmieren Sie die Anwendung so, dass sie auf das Erhalten eines Invoke-Ereignisses reagiert, indem sie ein neues Dokument oder Fenster öffnet, das den zusätzlichen Fotostream anzeigen kann, den Sie präsentieren möchten.
-
Verwalten Sie den Zustand angemessen:
- Stellen Sie sicher, dass Ihre Anwendung mehrere Fenster angemessen verwalten kann, indem Sie die Zustände effizient über die Instanzen hinweg verwalten.
Beispiel
Angenommen, Sie möchten ein neues Fenster öffnen, um einen zusätzlichen Fotostream anzuzeigen, wenn das Widget erneut angeklickt wird. Sie können den folgenden allgemeinen Ansatz in Ihren Anwendungs-Code einfügen:
app.addEventListener(Event.INVOKE, onInvoke);
function onInvoke(event) {
// Erstellen Sie ein neues Fenster oder Panel für den neuen Stream
var newStreamWindow = new StreamWindow();
newStreamWindow.show(); // Zeigen Sie das neue Stream-Fenster an
}
Fazit
Obwohl Sie keine separaten Instanzen einer Adobe AIR-Anwendung ausführen können, gibt es Umgehungen, die es Ihnen ermöglichen, die Situation effektiv zu handhaben. Durch die Verwendung der Methode des Invoke-Ereignisses können Sie ein flexibleres und reaktionsschnelleres Benutzererlebnis schaffen.
Obwohl diese Umgehungen möglicherweise nicht so nahtlos sind wie die Ausführung unabhängiger Instanzen, ermöglichen sie Ihnen, mehrere Streams in einem einzigen Anwendungsbereich zu verwalten. Halten Sie ein Auge auf die offizielle Dokumentation von Adobe für mögliche Updates oder Änderungen hinsichtlich dieser Einschränkung in der Zukunft.
Wenn Sie an detaillierteren Einblicken oder spezifischen Implementierungsfragen interessiert sind, zögern Sie nicht, sich zu melden!