我想知道以编程方式关闭AIR应用程序的正确方法。
在我的Spark WindowedApplication中,我有:
this.addEventListener( Event.CLOSING, shutdownApp );
当然还有shutdownApp方法的实现(它基本上整理了临时文件)。
这适用于窗口的右上方关闭按钮。但是我也有需要关闭应用程序的功能。在我调用的代码中:
NativeApplication.nativeApplication.exit();
但是,这不会触发Event.CLOSING方法,因此我的临时文件不会被清除。我不应该调用nativeApplication.exit吗?如果是这样,我该怎么称呼呢?我宁愿不必在NativeApplication.exit()之前调用我的shutdownApp方法,因为这感觉不太优雅。
任何人都可以对正确的做法有所了解吗?
谢谢,
菲尔
答案 0 :(得分:7)
我知道这个问题已得到回答和接受,但我想我会分享,我会用。
stage.nativeWindow.close();
答案 1 :(得分:4)
文档看起来有些含糊不清,我会有与你相同的解释。您是否在WindowedApplication上尝试了close或退出方法?
这样的事情,FlexGlobals和topLevelApplication:
(FlexGlobals.topLevelApplication as WindowedApplication).close();
或
(FlexGlobals.topLevelApplication as WindowedApplication).exit();
答案 2 :(得分:1)
这里只是给出一个答案,因为我搜索了一个相关的问题而无法找到......
我想做类似的事情并在按下文档窗口的原生关闭按钮(spark.components.Window)时关闭AIR应用程序,因为认为Spark WindowedApplication容器(应用程序主窗口)仍处于活动状态以进行保持和管理本机菜单(在应用程序启动时它也用于显示启动画面。它必须保持打开状态,因为如果它关闭,本机菜单将不会显示或不再可访问,因此其可见属性设置为false)
我的主要问题是窗口关闭事件。使用ActionScript注册
this.addEventListener(Event.Closing, windowClosed);
不起作用:未分派任何结束事件。 唯一的方法是在MXML文件的开头直接在s:Window元素中注册事件处理程序。我只是抛出结束属性:
closing="window1_closingHandler(event)"
然后调度事件并在window1_closingHandler-function中调用
NativeApplication.nativeApplication.exit();
这对我有用并关闭整个应用程序。