【问题标题】:Memory usage of Universal app for Windows 10适用于 Windows 10 的通用应用程序的内存使用情况
【发布时间】:2015-08-11 08:19:46
【问题描述】:

当我们为 Windows 10 构建通用应用程序时,为了支持多种分辨率,我们可以使用Adaptive triggers

在这种情况下,对于每个视觉状态,都使用单独的布局。如果我们要采用 3 种尺寸,则必须为每个布局创建,因此对于大多数控件来说,将有多个重复项,这些重复项在适当的视觉状态下被隐藏并变为可见。

所有这些控件都将加载到内存中并浪费 RAM,这对于内存不足的手机(如 lumia 620)来说可能很危险。

在这种情况下使用单独的视图是正确的解决方案吗?

更新

如果有人需要,这里有关于元素布局重新排序表格wintellect(AdaptiveTrigger,改变网格中的元素位置)和galasoft(AdaptiveTrigger,RelativePanel)的很好且非常简单的文章。

【问题讨论】:

  • 您可以为不同的设备创建不同的 xaml 页面,但使用相同的代码
  • 即使在这种情况下,对于移动设备,我们的屏幕从 4" 到 7" 具有多种分辨率,我也需要为这些情况创建单独的视图。在这种情况下,这不再是通用应用程序 :)
  • 它是通用应用程序。您为不同的设备创建不同的视图,但在后面共享相同的代码。相应的视图将在运行时选择。
  • 听起来您正在为每个布局创建不同的控件。不能重复使用相同的控件,而是以不同的方式布置它们吗?
  • @JonStødle,我只想知道这种情况下的最佳实践。所有布局的控件都是相同的,只是它们的位置不同。想象一下 4" 和 6.5" 上的应用程序。元素必须以不同的方式放置。

标签: xaml windows-10 win-universal-app windows-10-mobile


【解决方案1】:

Windows 10 Xaml 引入了一个属性 x:DeferLoadingStrategy 来标记仅在需要时才加载的控件。这将允许您在 Xaml 中包含所有控件,而无需将它们加载到内存中,除非它们被实际使用。在设备可能仅实际使用一种尺寸(或两种用于纵向/横向)的移动案例中,其他尺寸的布局将永远不会加载。

对于您使用相同控件但位置略有不同的情况,我会考虑移动它们(可能使用 RelativePanel),正如 Jon Stødle 在 cmets 中所建议的那样。

如果有更大的更改,那么我会在同一个文件或使用单独的 Xaml 中查看单独的布局(就像您正在做的那样),但是对于简单的位置更改,这可能是矫枉过正的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2023-03-30
    • 1970-01-01
    • 2011-03-09
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多