앱 개발에 앞서 항상 다음 두가지를 먼저 작업을 해놓고, 개발에 들어가는게 여러모로 좋을 것 같습니다.

 

1. 슬립모드에 들어가는 것을 방지하자.

2. 앱 종료시 앱을 완전히 종료시키도록 하자. 

 

대부분 기본적으로 슬립모드(화면자동꺼짐)기능을 사용하고 계실것입니다. 디바이스에 앱 테스트 할 때 슬립모드 방지기능을 해놓지 않으면 화면이 자꾸 꺼져버려서 개발에 불편함이 있을 수도 있으니, 이를 미리 막아놓고 개발하시는것을 추천드립니다. 그리고 어떠한 경로로 종료가 되든(강제종료,전화,슬립모드 등) 앱이 비활성화(deactivate)되면 앱을 완전히 종료시켜야 베터리도 작게 잡아먹습니다.  예전에 이 기능을 구현해놓지않아, 2GB데이터 용량을 하루아침에 다 써버린 경우도 있었습니다. 종료된줄만 알았던 개발앱이 계속 통신을 하고 있었더랬죠. ㅠ

 

먼저 Manifest설정을 해주어야 합니다. 프로젝트 생성시에 아래와 같이 DISABLE_KEYGUARD, WAKE_LOCK 설정을 체크하던지, 아니면 설정파일에 주석을 제거해주시면 됩니다.

문서에 보면 이 권한에 대한 설명을 다음과 같습니다.

 

DISABLE_KEYGUARD, WAKE_LOCK : 응용 프로그램에서 장치가 SystemIdleMode 클래스 설정을 사용하여 대기 모드로 들어가지 못하게 할 수 있도록 허용합니다.

 

 

 

 

 

 

 

 

코드를 보시면 다음과 같습니다.  코드설명을 구지 필요없을듯...

 

    protected function viewnavigatorapplication1_preinitializeHandler(event:FlexEvent):void

    {

         if(Capabilities.cpuArchitecture=="ARM")

         {

            NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, handleActivate, false, 0, true);

            NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate, false, 0, true);

            NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke, false, 0, true);

         }

    }

               

    private function handleActivate(e:Event):void

    {

         trace("앱활성화");

         // 항상 AWAKE되게 설정

         NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

    }

               

    private function handleDeactivate(e:Event):void

    {

         trace("앱꺼짐");

         // 앱종료시킴

         NativeApplication.nativeApplication.exit();

    }

               

    private function onInvoke(e:InvokeEvent):void

    {

         NativeApplication.nativeApplication.removeEventListener(InvokeEvent.INVOKE, onInvoke);

    }             

 

* Source code : WakeExample.fxp

* Flex Mobile에서 Manifest 설정 : Android 설정

AND