Adobe Air (wiwobooks.com Release)
Anwendung explizit geöffnet bleibt, auch wenn keine Fenster der Anwendung mehr geöffnet sind, z. B. für eine Anwendung, die die Netzwerkverbindung des Computers überwacht oder auf andere Art und Weise im Hintergrund agiert, während ein anderes Programm im Vordergrund verwendet wird.
Lösungsweg
Setzen der Eigenschaft NativeApplication.autoExit
true
Anwendung wird nach Schließen des letzten Fenster automatisch geschlossen (Standardeinstellung)
false
Anwendung bleibt nach Schließen des letzten Fensters geöffnet
So geht es
Das folgende kurze Listing zeigt ein Fragment einer Flex-Anwendung, die nach Schließen des letzten Fensters offen bleibt:
Listing 8.3 Anwendung mit ausgeschalteter autoExit-Funktion
Stolperfallen/Caveats
Wenn Sie die autoExit -Funktion Ihrer Anwendung ausschalten, müssen Sie dafür sorgen, dass für Ihre Anwendung ein Icon definiert ist, über das der Benutzer noch mit der Anwendung interagieren kann.
Wenn Sie das Beispiel für Icons innerhalb der Anwendung in Abschnitt 8.2.2 wie folgt um die in fett dargestellten Inhalte ergänzen, bewirkt ein Klick auf das System-Tray-Icon das komplette Schließen der Anwendung:
import mx.controls.Menu;
import mx.core.BitmapAsset;
[Bindable]
[Embed(source="icons/AIRApp_16.png")] private var Image16x16:Class;
[Bindable]
[Embed(source="icons/AIRApp_32.png")] private var Image32x32:Class;
[Bindable]
[Embed(source="icons/AIRApp_48.png")] private var Image48x48:Class;
[Bindable]
[Embed(source="icons/AIRApp_128.png")] private var Image128x128:Class;
private var appInitialized:Boolean = false;
public function init():void {
var icon_16:BitmapData =
BitmapAsset(new Image16x16()).bitmapData; var icon_32:BitmapData =
BitmapAsset(new Image32x32()).bitmapData; var icon_48:BitmapData =
BitmapAsset(new Image48x48()).bitmapData; var icon_128:BitmapData =
BitmapAsset(new Image128x128()).bitmapData; this.nativeApplication.icon.bitmaps =
new Array(icon_16, icon_32, icon_48, icon_128); lblInfo.text = "Mein Icon ist " + this.nativeApplication. icon.width.toString() + " Pixel breit.";
this.nativeApplication.icon.addEventListener(ScreenMouseEvent. CLICK, nativeApplication.exit);
}
else {
appInitialized = true; }
}
]]>
public function invokeMe():void { if(appInitialized == true) { this.nativeApplication.exit(); }
Listing 8.4 Listingunterschrift fehlt
In der Praxis sollte man dieses Verhalten jedoch nicht einem Linksklick anhängen, sondern eher einem Kontextmenü.
Hinweis
Der Einfachheit halber wurde im vorigen Beispiel für Betriebssysteme, die nicht über System-Tray-Icons verfügen (z. B. Mac OS X), die gleiche Funktionalität mithilfe des invoke -Ereignisses der nativen Anwendung eingefügt. Dieser Trick ist jedoch nicht tauglich für eine tatsächliche Anwendung, weil das invoke -Ereignis generell auch ausgelöst wird, wenn die Anwendungsverknüpfung doppelgeklickt wird, während die Anwendung bereits offen ist.
8.4 Benachrichtigung mithilfe des Icons
Insbesondere wenn Ihre Anwendung mit dem Benutzer kommuniziert, während das Fenster inaktiv ist (das heißt ein anderes Fenster im Vordergrund ist), kann es nötig sein, den Benutzer auf ein Ereignis Ihrer Anwendung aufmerksam zu machen.
Dabei ist die Herangehensweise hierfür unterschiedlich: Während bei Mac das Dock-Icon der Anwendung hüpfend animiert wird und so auch bei nicht sichtbarem Dock in das Blickfeld des Benutzers rückt, geschieht eine Benachrichtigung in Windows oder Linux über die Taskleiste. Hier repräsentiert ein mit dem Icon der Anwendung und dem Titel des nativen Fensters versehener Button ein »normales« Fenster der Anwendung, der infolge der Benachrichtigung hervorgehoben dargestellt wird.
8.4.1 Dock-Icon »hüpfen« lassen
Mac OS X verfügt nicht über eine Taskleiste, sondern über ein Dock, in dem die Icons der laufenden Anwendungen dargestellt werden. Wenn eine Anwendung eine Interaktion erfordert, macht das Icon der Anwendung durch eine Animation auf diesen Umstand aufmerksam (siehe Abbildung
Weitere Kostenlose Bücher