【问题标题】:PhoneApplicationService.Current.State vs IsolatedStorageSettings windows phonePhoneApplicationService.Current.State 与独立存储设置 windows phone
【发布时间】:2014-09-22 14:58:13
【问题描述】:

我需要将大量数据从一个页面传递到另一个页面。据我所知,我有两个选择, PhoneApplicationService 和独立存储设置。

PhoneApplicationService 在页面之间传递时会产生很多延迟。因此,我使用了 IsolatedStorageSettings,但在从 IsolatedStorageSettings 中删除项目时,我创建了一些异常的对象。

哪个是处理大型复杂对象的最佳选择?

从 IsolatedStorageSettings 中删除项目时实际发生了什么?

谢谢

编辑: 当我从 IsolatedStorageSettings 中清除或删除项目时,已存储密钥的新对象是 已创建。

示例代码:

                if (IsolatedStorageSettings.ApplicationSettings.Remove("FormFields"))
                {
                    IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);                       
                }
                else
                {
                    IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);                      
                }

【问题讨论】:

  • 因此,使用IsolatedStorage 将数据写入存储(暗示)。这意味着数据本质上是“永久的”并写入磁盘,这将导致磁盘写入延迟。您真正要查找的是 ViewModelServiceLocator 的组合。这种模式允许你做的是有一个地方存储(基本上)某些类的单例(ViewModels),这些类存储视图所需的数据。您应该查看 MvvmLight,因为它们提供了一个非常简单的实现 ViewModelServiceLocator,它们应该是可移植的(因为您包括 WP7 和 WP8)。
  • 谢谢内特。是的,你说的是对的,我已经实现了维护 ViewModel,所以现在切换回不同的方法需要做很多工作,但我只是在寻找从一个页面传递到另一个页面的最佳方法。
  • 关键是ServiceLocator。这让您可以轻松说出 ViewModelLocator.MyPageVM 之类的内容。那么你就不需要在页面之间传递引用了;他们可以静态检索它们。

标签: c# windows-phone-7 windows-phone-8 windows-phone tombstoning


【解决方案1】:

为什么不直接使用 App 类?

public partial class App : Application
{
    public YourDataObject ApplicationDataObject { get; set; }
}

您可以在任何页面中使用它,例如在跳转到下一页之前设置值:

 (Application.Current as App).ApplicationDataObject = new YourDataObject();

一旦你在正确的页面中检索值:

YourDataObject yourData = (Application.Current as  App).ApplicationDataObject;

它并不漂亮,但它非常简单,也许在你的情况下它是最好的解决方案。

【讨论】:

  • 你的意思是说它比State和IsolatedStorage更快更简单吗?我需要最好的优化方式。谢谢
  • @PradeepAJ 就像给全局变量赋值一样快速简单。在这种情况下,全局变量将是 ApplicationDataObject,一旦您不需要这些值,您可以设置 null 值并且 GC 应该释放内存。
  • 是的,这是我当前实现的最佳方式。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多