【发布时间】:2016-01-27 22:40:36
【问题描述】:
我一直在 UWP 应用程序中使用带有页面导航方法的参数传递没有问题(对象序列化和反序列化)。随着我的对象(作为参数传递)的大小增加,当应用程序暂停并且 SuspensionManager 尝试序列化导航参数并将其保存到本地存储时,我开始遇到问题。我得到一个异常,表明我认为大小限制为 8K(并假设我无法控制这个大小)。
所以我正在考虑通过内存缓存而不是导航参数传递参数(例如,将我的复杂数据对象保存到内存中以 nameof(PageNavigatedToType) 为键的字典中,并在目标页面中检索 NavigatedTo 上的缓存数据。我的担心可能会增加内存使用量,例如不确定将特定字典值设置为 null(不再需要时)是否会对全局内存(我的意思是应用程序范围)产生如此大的影响。
任何想法和建议表示赞赏。
【问题讨论】:
-
我的 This answer 可能会对您有所帮助。
-
感谢您的指点。我假设全局缓存不是一个好主意。您是否有一个参考链接(如果有)来解释第二个要点,即“或者在任何类型的 Manager 类中保留对它们的引用,它是...的成员”。谢谢。
-
遗憾的是,没有任何参考。它最终进入全局缓存 - 或称为管理器 - 用于复杂数据。通过导航参数处理这些没有意义。但是,这个管理器应该或多或少像一个
Stack:把一些东西放到导航(参数)堆栈上,下一页打开将采用该导航(参数)。 -
@Hedro 但是当应用程序暂停时问题就会出现。暂停时导航参数需要序列化并保存到本地存储,超过一定大小时会导致异常。这就是我的问题开始的地方。即使是复杂的对象,我也一直在使用导航参数而没有问题。
标签: c# caching windows-runtime uwp