Adobe Air应用程序 - 不在后台而不在前台 - iPhone

时间:2016-09-05 07:43:00

标签: ios iphone actionscript-3 air

我有一个adobe air应用程序 - 适用于iOs和Android的AS3。
每当用户单击主页按钮,然后应用程序现在处于后台时,应用程序将自动停止,这是预期的行为。
现在,如果用户在应用程序中,并且他加倍点击他的主页按钮,显示所有多个窗口,应用程序继续运行,这不是我想要的。
如何访问该状态(非背景,而不是前景)?如果我可以访问它,我会将我的暂停代码放入该状态,但我如何访问该特定状态?

1 个答案:

答案 0 :(得分:1)

当用户点击主页按钮时,应用程序将移至后台并暂停。该应用尚未关闭。操作系统可以关闭应用程序以释放内存。如果你的应用程序是记忆猪,你会发现这种情况。

您使用NativeApplication对象调度的事件。下面是监听和处理这些事件的示例代码。

import flash.events.Event;
import flash.desktop.NativeApplication;
import flash.desktop.SystemIdleMode;

// create listeners to NativeApplication
private var naApplication: NativeApplication;
naApplication = NativeApplication.nativeApplication;

naApplication.addEventListener(Event.ACTIVATE, eActivate);
naApplication.addEventListener(Event.DEACTIVATE, eDeactivate);
naApplication.addEventListener(Event.EXITING, eExiting);

private function eActivate(e: Event): void {
    // app has opened or resumed 
    application.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
}

private function eDeactivate(e: Event): void {
    // app is going to be moved to background 
    application.systemIdleMode = SystemIdleMode.NORMAL;
}

private function eExiting(e: Event): void {
    // app is going to be closed by user or by the OS (usually to free up memory)
    // do whatever exit code here then remove all listeners (to be clean don't rely on OS to close them) 
    application.removeEventListener(Event.ACTIVATE, eActivate);
    application.removeEventListener(Event.DEACTIVATE, eDeactivate);
    application.removeEventListener(Event.EXITING, eExiting);
    application.systemIdleMode = SystemIdleMode.NORMAL;
    removeEventListener(Event.ENTER_FRAME, eMainTimer);
}

systemIdleMode和ENTER_FRAME只是典型代码的示例。让我知道任何问题。