2

OnResuming 이벤트에 대한 설명 : J. Windows Likewise, "C# 및 XAML을 사용하여 Windows 8 응용 프로그램 구축", ""이 정보는 적시의 데이터로 정보를 새로 고치는 응용 프로그램에 대한 것입니다 "내 페이지에서 앱이 재개되었다는 것을 어떻게 알 수 있습니까?

내 응용 프로그램에 이러한 데이터가있는 페이지가 하나 있습니다. 사용자가 앱을 다시 시작한 경우 명시 적으로 이 반환되거나 해당 페이지로 암시 적으로/자동으로 반환됩니다 (앱이 일시 중지되었을 때 해당 페이지에 있다고 가정). 데이터를 새로 고침하고 싶습니다. 하지만 내 앱이 일시 중지/재개되었음을 어떻게 알 수 있습니까?

제 아이디어는 데이터가 풍부한 페이지가 OnNavigatedTo() 이벤트에서 조사 할 수있는 bool을 설정하는 것입니다. 사실이라면 데이터를 새로 고칩니다. 이 작업을 수행하는 더 좋은 방법이 있을지도 모르며, 더 중요한 것은 OnNavigatedTo() 이벤트가 사용자가 페이지에 있었고 앱이 일시 중지 된 후 다시 시작된 경우에 발생 했습니까? 또는 앱이 페이지를 전혀 본 적이없는 것으로 간주하여 다시 탐색하지 않습니다. 아마도 다른 페이지 수준 이벤트가 더 적절할 것입니까?

답변

1

관심있는 페이지를 새로 고쳐야 할 때 임계 값을 결정해야한다고 말하고 싶습니다. 부울만큼 간단하지 않다고 생각합니다. 사용자는 일시 중지하고 거의 즉시 재개 (15 초 이내에 말하기) 할 수는 있지만 새로 고침을받을 수는 없지만 동일한 사용자가 보조 페이지에 머무를 수 있으며 일시 중지하지 않고 30 분 후에 다시 페이지로 돌아올 수 있습니다. 페이지 데이터가 상당히 오래 걸릴 수 있습니다. 귀하의 부울은 더 많은 타임 스탬프가 필요합니다.

다시 말하면 Resuming 이벤트는 OnNavigatedTo을 발생시키지 않습니다. 다시 방문 할 페이지가 무엇인지 알아야 할 경우 일시 중지 할 때 해당 정보를 저장해야합니다 (예 : LocalSettings). 그러나 이제는 C#/XAML에서 SuspensionManager을 사용하는 경우 이미 사용자를 대신하여이 문제가 발생하고 있다고 생각할 수 있습니다. 응용 프로그램을 생각할 때 원하는 동작이 너무 다르지 않은 경우 종료 된 상태에서 되돌아옵니다.

그래서 비슷한 방식으로, 당신은 다시 시작 이벤트의 구현으로 전화

await SuspensionManager.RestoreAsync() 

을 추가 할 수 있습니다. 차례 차례로, OnNavigatedTo를 일으키고 당신은 그 페이지를 제기하는 정상적인 논리를 따라갈 것입니다.

기술적으로 더 이상 다시 시작하지 않으므로 전체 페이지를 다시로드하기 위해 다시 시작 이벤트를 사용하는 것입니다. 이는 페이지의 성격에 따라 과도 할 수 있습니다 (예 : 반 정적 인 데이터가 많으며 약간의 휘발성 데이터 만 있음 - 재개은 정적 데이터를 복원 할 필요가 없음). 'resume'과 '종료'에서 얼마만큼 새로 고쳐야할지 다시 전화를 걸면되지만 SuspensionManager는보고 변경할 수있는 코드이므로 그 세분화 수준을 제어 할 수 있습니다. 아마도 여기에서는 Resume과 다른 방법으로 호출 할 때 LoadStateAsync에서 수행해야 할 작업을 구별하기 위해 Boolean을 제안했습니다.