Windows Phone 8.1的基本页面模板具有以下方法:
private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
protected override void OnNavigatedTo(NavigationEventArgs e)
protected override void OnNavigatedFrom(NavigationEventArgs e)
我的理解是上面的NavigationHelper
方法用于在NavigationHelper_SaveState
中保存页面数据,以便下次加载页面时可以在NavigationHelper_LoadState
中使用。
OnNavigatedFrom
用于执行任何后续任务,OnNavigatedTo
用于执行任何启动任务。但是,OnNavigatedFrom
方法包含从前一帧中的Frame.Navigate()
方法传入的数据。
我的问题是,我认为前两种方法用于在单个页面内维护数据是否正确,而后两种方法用于在两页之间传输数据?
答案 0 :(得分:2)
我会尝试解释一下它是如何工作的以及它的用处。
首先,您提到的所有方法都是相互关联的,更多 - 它还涉及 SuspensionManager 。看一下 Page 的方法(事件处理程序):NavigationHelper_LoadState
nad NavigationHelper_SaveState
是从导航事件运行的。他们订阅了页面构造函数中的事件:
this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
并通过调用 NavigationHelper的方法在导航事件*中触发它们:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
}
// inside the method event is fired:
if (this.LoadState != null)
{
this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));
}
LoadState 和 SaveState 是帮助您更轻松恢复网页的帮助程序。它有用吗? - 当您的Page的资源被释放时,一段时间后您想要将其恢复。简单示例:您使用FilePicker,ShareTarget,您的应用程序已被暂停并释放其资源,然后当您激活您的应用程序(应该带回您的页面)时,可能需要恢复页面的资源(例如您拥有的页面)在导航期间通过参数传递)。
另请注意,这些案例还涉及 SuspensionManager ,您应该注意在App.xaml.cs中恢复您的应用程序( OnLaunched ,已激活和其他)。
另请注意,这些模板只是帮助者,您可能需要一种不同的行为,您可以自己实施。
MSDN上的一些资源:Lifecycle,Launching, resuming, and multitasking和Guidelines for app suspend and resume。