以编程方式关闭AIR应用程序

时间:2011-02-17 16:47:52

标签: flex air shutdown flex-spark

我想知道以编程方式关闭AIR应用程序的正确方法。

在我的Spark WindowedApplication中,我有:

this.addEventListener( Event.CLOSING, shutdownApp );

当然还有shutdownApp方法的实现(它基本上整理了临时文件)。

这适用于窗口的右上方关闭按钮。但是我也有需要关闭应用程序的功能。在我调用的代码中:

NativeApplication.nativeApplication.exit();

但是,这不会触发Event.CLOSING方法,因此我的临时文件不会被清除。我不应该调用nativeApplication.exit吗?如果是这样,我该怎么称呼呢?我宁愿不必在NativeApplication.exit()之前调用我的shutdownApp方法,因为这感觉不太优雅。

任何人都可以对正确的做法有所了解吗?

谢谢,

菲尔

3 个答案:

答案 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();

这对我有用并关闭整个应用程序。