【问题标题】:Page constructor gets called again when navigating back in Windows 8 C# App在 Windows 8 C# App 中导航返回时再次调用页面构造函数
【发布时间】:2012-09-19 23:16:14
【问题描述】:

我发现在 Windows 8 应用程序中,页面的构造函数总是在导航回此页面时再次被调用,但在 Windows Phone 7 应用程序中并非如此。

由于这种行为,该页面的所有属性都会丢失,您需要以某种方式存储它们并在页面重新激活后重新分配它们。目前我正在使用SaveState 方法保存数据并在LoadState 方法中重新分配数据。这两种方法都内置在示例 Grid/Split App 中。

我想知道为什么要这样设计,是否有更好的方法来维护页面实例?

【问题讨论】:

  • +1 表示这一点。它让我措手不及。这是一个重大变化,意味着要彻底重新思考您的状态和虚拟机生命周期。

标签: windows-8 windows-runtime windows-store-apps winrt-xaml windows-store


【解决方案1】:

您可以为要保留在内存中的每个页面设置 Page.NavigationCacheMode = NavigationCacheMode.Required,但请注意,您必须确保用户不能无休止地浏览这些页面,因为这会泄漏内存。

【讨论】:

  • 谢谢!只是想知道为什么会有任何内存问题?有什么最佳实践吗?
  • 好吧,如果您将页面保留在内存中 - 在您从前后堆栈中删除页面之前,页面所持有的任何内存都不会被释放。如果您分配大量内存 - 您可以在 OnNavigatedTo 中执行此操作并在 OnNavigatedFrom 中释放它,但我想最好的方法是保持原样,不缓存页面实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2021-08-06
  • 2011-02-12
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多