내 UWP 앱이 일시 중지되었을 때 프리즘을 사용하여 개체를 저장하려고 시도하기 때문에 다시 시작하거나 시작할 때 복원 할 수 있습니다. 저장은 앱의 Suspending 이벤트가 시작되고 오브젝트가 Resume 및 LaunchApplicationAsync에서 검색 될 때 수행됩니다.UWP 프리즘 SessionStateService가 사용자가 닫은 후에 상태를 잃습니다.
디버그에서 Visual Studio 일시 중지 및 다시 시작을 사용할 때 개체가 올바르게 복원되지만 일시 중지 및 종료 또는 응용 프로그램을 직접 종료 할 때 개체가 복원되지 않습니다. 이 동작은 RestorableState 주석이있는 프리미티브 속성과 동일합니다.
종료 후 앱이 시작되면 SessionState 사전에 하나의 항목 ('AppFrame'키 - 프리즘으로 삽입 된 것처럼 보임) 만 표시되어 사전을 재설정 할 수 있습니다. Suspended 상태 (즉, 사용자가 종료하거나 사용자가 닫을 때)를 초과하여 저장 한 값을 유지하려면 특별한 조치가 있습니까?
protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs e)
{
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
RootPageViewModel.ShellNavigation(typeof(SurveyListPage));
RootPageViewModel.RestorePropertyStates();
return Task.FromResult(true);
}
그리고 RestorePropertyStates 방법 : 또한
public void RestorePropertyStates()
{
if (SessionStateService.SessionState.ContainsKey(nameof(CurrentLocation)))
{
CurrentLocation = SessionStateService.SessionState[nameof(CurrentLocation)] as ViewLocation;
}
}
속성 저장 방법 :
public void SavePropertyStates()
{
if (SessionStateService.SessionState.ContainsKey(nameof(CurrentLocation)))
{
SessionStateService.SessionState.Remove(nameof(CurrentLocation));
}
SessionStateService.SessionState.Add(nameof(CurrentLocation), CurrentLocation);
}
알려진 유형에 ViewLocation을 추가했습니다. 이것은 복잡한 유형이지만, 알려진 유형으로 정의되지 않은 객체를 무시하고 원시 속성을 직렬화해야한다고 가정합니다. ViewLocation의 속성을 직렬화 할 수 없기 때문에 깨진 경우에도 [RestorableState]가없는 프리미티브를 저장해야합니까? – fralama