2016-09-05 6 views
-1

iOSとAndroid用のAdobe AIRアプリケーション - AS3があります。
ユーザーがホームボタンをクリックしてアプリケーションがバックグラウンドになると、アプリケーションは自動的に停止しますが、これは予想される動作です。
ユーザーがアプリケーションにいて、ホームボタンをダブルクリックして複数のウィンドウをすべて表示すると、アプリケーションは実行し続けますが、これは私が望むものではありません。
どうすればその状態にアクセスできますか(フォアグラウンドではなく、バックグラウンドではない)?私はそれにアクセスすることができます、私はその状態に私の一時停止コードを置くだろうが、どのように私はその特定の状態にアクセスできますか?Adob​​e Airアプリケーション - バックグラウンドではなく、フォアグラウンドではありません - iPhone

答えて

1

ユーザーがホームボタンをクリックすると、アプリはバックグラウンドに移動され、中断されます。アプリは閉鎖されていません。 OSはメモリを解放するためにアプリを閉じることができます。あなたのアプリがメモリ豚なら、これが起こっているのを見るでしょう。

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は、典型的なコードの単なる例です。質問があれば教えてください。

+0

返信いただきありがとうございます、私はそれをできるだけお試しいただき、あなたにお返しします! –

+0

ありがとうございました!魅力的に働いた! –

関連する問題