스토어 앱의 터미네이터를 다루자! (사건편)
3227 단어 XamlWindows 스토어 앱C#
이번, 다음과 2부 구성으로 스토어 앱이 대처해야 하는 이 「터미네이터」에 대해서
소개하고 싶습니다.
예를 들어 그리드 애플리케이션 템플릿으로 작성된 웹 API에서 가져온 사진 이미지의 뷰어 앱을 상상해 보십시오.
위와 같이 상세 화면에서 한 장의 사진 이미지를 표시 한 후 앱을 다른 것으로 전환하고
여러가지 작업을 한 후에 원래의 앱으로 돌아가 보면・・・
사라져라!・・・이런 현상을 목격된 적은 없습니까.
이것이 스토어 앱의 터미네이터의 작업입니다.
Windows 스토어 앱 수명 주기
터미네이터의 정체는 무엇이며, 그것을 해결하는 열쇠는 Windows 스토어 앱
수명주기에 있습니다.
Runing(실행중), NotRunning(정지), Suspended(중단)의 3개의 실행 상태의 천이를 나타낸 위의 그림을 본 적이 있는 분도 많다고 생각합니다. 실행 중 스토어 앱이 전환되고 비활성화되면 중단되고 다시 활성화되면 다시 시작하여 실행 중인 상태로 돌아가는 것을 읽을 수 있습니다. 만약 그렇다면, 방금 전의 예와 같은 현상은 일어나지 않고 다시 원래의 사진 화상이 표시될 것입니다만・・・. 실은 스토어 앱의 실행 상태는 정확하게는 보다 세세하게 분류되고 있습니다. ApplicationExecutionState.cs namespace Windows.ApplicationModel.Activation { // 개요: // 응용 프로그램의 실행 상태를 지정합니다. [Version(100794368)] public enum ApplicationExecutionState { // 개요: // 응용 프로그램이 실행되고 있지 않습니다. NotRunning = 0, // // 개요: // 응용 프로그램이 실행 중입니다. Running = 1, // // 개요: // 응용 프로그램이 중단되었습니다. Suspended = 2, // // 개요: // 응용 프로그램이 중단 후 종료되었습니다. Terminated = 3, // // 개요: // 응용 프로그램은 사용자가 닫았습니다. ClosedByUser = 4, } } 라이프사이클의 그림에는 없는 「Terminated」와 「ClosedByUser」라는 상태가 있네요. 이것을 다시 그림에 일으켜 보면 대략 아래와 같은 느낌이 됩니다. ClosedByUser는 사용자가 종료했는지 여부를 제외하고 상태 전환으로 NotRunning 및 그렇게 변하지 않습니다. 그러나 Termination은 메모리 용량이 줄어들면 OS에 의해 종료되고 다시 앱이 기동하는 경우에는 원래 상태로 되돌리는 복귀 처리를 수반한다고 하는 특수한 천이를 합니다. 사용자가 모르는 곳에서 OS가 종료되었으므로 다시 앱을 활성화하고 재개시킨 경우에 원래 상태로 돌아가는 것은 당연히 유저로부터 기대되는 동작이군요. 다음 정보에서도 터미널에서 시작된 경우에만 세션 데이터를 복원 할 수 있습니다. 추천합니다. 애플리케이션 수명 주기(Windows 스토어 앱) - 종료된 이유
종료된 이유
PreviousExecutionState
수행할 처리
시스템으로 종료
Terminated
세션 데이터 복원
사용자 종료
ClosedByUser
기본 데이터로 시작
예기치 않은 종료
NotRunning
기본 데이터로 시작
종료하면 메모리 상에서 앱의 데이터는 일단 모두 사라져 버립니다만,
Terminated로 종료한 경우 다시 시작될 때 원래 데이터를 복원해야 합니다.
처음에 복귀할 때 사진이 표시되지 않는 현상은 이 세션 데이터의 복원이 불완전하기 때문에
일어난 문제였던 것입니다.
다음 번 예고
이제 알겠지요・・・터미네이터의 정체는 OS인 Windows입니다.
시스템 리소스가 충분하지 않아 앱을 메모리에 보관할 수 없는 경우 중단된 앱에서
종료시켜 OS의 가동을 유지하는 일을 하고 있는 것이군요.
이 강제 종료에서 스토어 앱을 놓칠 수 없습니다 ... 전체 앱 데이터
복원을 할 수밖에 없다! 그렇다고 하는 것으로 다음번은 이 복귀 처리의 구체적인 실장예를 소개하고 싶습니다!
Reference
이 문제에 관하여(스토어 앱의 터미네이터를 다루자! (사건편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/matatabi_ux/items/ef19d52ac003bee09932텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)