Metro/Windows Phone 7

FAQ - Foreground/Background에서의 어플리케이션 프로세스 #WP7

길버트리 2010. 4. 10. 01:15
Foreground/Background에서의 어플리케이션 프로세스

내 어플리케이션을 백그라운드에서 동작시킬 수 있습니까?
아니오. 윈도우폰 7에서의 어플리케이션 모델은 Foreground에서만 동작합니다.
만약 당신의 어플리케이션이 돌고 있는 사이에 다른 어플리케이션이 시작된다면,
당신의 어플리케이션이 곧 종료될 것이라고 알려주는 이벤트를 받게 될 것입니다.

내 어플리케이션이 Foreground(여기서는 멀티태스킹 상의 우선권)을 잃을 때 어떤 일이 일어나나요?
어플리케이션이 닫히고 있다는 알림을 받게 될 것입니다. 우선권을 잃고 난 후 어플리케이션에게 할당된
시간이 얼마인가는 아직 결정되지 않았습니다. 만약 상태보존이 필요하다면, 이것을 다루는 로직을
추가하셔야 합니다. 

어플리케이션이 Foreground를 잃었다가 다시 시작되면 어떤 일이 일어나나요?
어플리케이션은 초기 엔트리포인트에서부터 다시 시작됩니다. 만약 상태보존이
필요하다면 이전 상태를 저장해 놓고, 이것을 다시 불러들일지 말지를 결정하는 로직을
 넣어야 합니다.

이것은 효율적으로 백그라운드 업데이트가 필요한 어플리케이션은 작성할 수 없다는 뜻인가요?
아니요! 우리는 어플리케이션이 활용할 수 있는 Push Notification을 지원합니다.
채팅 프로그램, 턴제의 게임 등 외부 이벤트에 의존하는 컨셉들은 Push Notification을 이용할
완벽한 후보입니다. 더 자세한 내용은 MSDN의 Push Notification에 대한 내용을 참고하십시오.
 http://msdn.microsoft.com/en-us/library/ff402558%28VS.92%29.aspx

어플리케이션이 구동 중이지 않을 때 Push Notification을 이용하여 시작시킬 수 있나요?
직접적으로는 안됩니다. 어플리케이션을 위해 Push Notification이 보내졌을 때, 새 정보가
대기 중이라는 것을 반영하기 위해 어플리케이션 토큰이 업데이트 되고, 사용자에게 어플리케이션을
구동시킬 것인가 물을 것입니다. 어플리케이션이 자동으로 시작될 수는 없습니다.

어플리케이션을 시작시키기 위하여 타이머를 설정할 수 있습니까?
아니오, 어플리케이션을 시작할지 말지는 전적으로 사용자에게 달려있습니다.

시스템 이벤트 기반으로 어플리케이션을 시작시킬 수 있습니까?
안될 것 같지만, 아직 미해결문제이다. 아마 시스템 이벤트에 의해 어플리케이션을 시작시킬 수는
없을 것이지만, 사용자가 어플리케이션을 시작할 때 캐쉬된 알림을 얻을 수 있을 것입니다.
더 자세한 정보는 나중에 포스팅 하겠습니다.

만약 UI가 필요없다면 OS에 상주할 수 있는 서비스 DLL을 구현할 수 있습니까?
아니오, Service DLL은 작성하실 수 없습니다. 모든 어셈블리는 OS와 별개로 그들의 SandBox 안에서
작동할 것입니다.

(본 포스트는 Windows Phone 7 Series Developer General FAQ에서 발췌한 것입니다.)