본문 바로가기

Programming/Windows&C#

[Windows/UWP] UWP Life Cycle

728x90
반응형


 작업환경


 Windows 10 Pro


 Visual Studio 2017


관련 내용 링크는...


https://docs.microsoft.com/ko-kr/windows/uwp/launch-resume/app-lifecycle



예전 윈도우 앱을 개발할 때에는 앱의 LifeCycle에 대해 크게 중요하지 않게 생각하고 개발 했었다.


물론 그 때는 개발을 처음 공부 했을때라 그냥 무작정 개발했고 (물론 지금도 잘 모르지만...) 신경쓰지 않아도 크게 문제 없이 진행하는데 무리가 없었다.


하지만 모바일 환경에서는 LifeCycle을 생각하면서 개발 할 일이 제법 있었다.


그래서 이번에는 UWP의 LifeCycle이 어떻게 동작하는지 정리한다.


1. 앱 실행 상태


ApplicatoinExecutionState

설명 

수행할 작업 

 NotRunning

마지막으로 사용자가 다시 부팅하거나 로그인 한 후 앱을 실행하지 않은 경우 이 상태일 수 있다. 실행 중었지만 충돌이 발생했거나 사용자가 이전에 앱을 닫은 경우에도 이 상태가 될 수 있다.

현재 사용자가 처음 사용하는 것처럼 앱을 초기화 한다. 

Suspended 

사용자가 앱을 최소화 하거나  전환 했으며 몇 초 내 돌아오지 않았다.

앱이 일시 중단 된 경우 해당 상태가 메모리에 남아 있습니다. 앱이 일시 중단되었을 때 릴리즈된 파일 핸들이나 기타 리소스를 다시 획득하면 된다.

Terminated 

앱이 이전에 일시 중지되었지만 시스템이 메모리를 확보하기 위해 일정 시점에 종료되었다.

사용자가 전환 했을 때의 앱 상태를 복원한다. 

ClosedByUser 

사용자가 태블릿 모드에서 닫기 재스처를 사용하거나 Alt + F4 를 사용하여 앱을 닫음. 사용자가 앱을 닫으면 먼저 일시 중단된 다음 종료된다.

 기본적으로 앱이 Terminated 상태로 진행하는 동일한 단계를 거쳤기 떄문에 Terminated 상태와 동일한 방식으로 처리한다.

Running 

사용자가 앱을 다시 실행할려고 할 때 앱이 이미 실행 중이다. 

없음. 다른 앱의 인스턴스가 실행되지 않았다. 이미 실행중인 인스턴스가 활성화 된 것 뿐이다. 



각 해당 상태를 보고 싶어서 OnLaunched() 함수에 아래와 같이 상태를 받아와서 디버그 메시지를 출려하게 했는데...


확인 가능한 메시지는 NotRunning, Running, Terminated 였다...





다음에는 각각의 상태를 확인하기 위한 방법을 확인해봐야겟다...

반응형