我正在试验 MvvmCross 视图模型,在我的应用程序中,它们不仅在具有相似布局结构的不同平台之间共享,而且在根据应用程序的外形尺寸以不同方式呈现信息的应用程序之间共享。例如,iPad 应用程序可能会在同一页面上显示客户列表和选定的客户详细信息,而 iPhone 应用程序会将它们拆分到不同的页面中。MvvmCross 支持所有此类场景,因此在所有这些应用程序之间共享公共视图模型集非常简单。
然而,在某些情况下,在多个视图模型之间共享相同的细节很方便。例如,不同的视图可能会显示最近的 twitter 消息、股票报价更新等。或者一些全局用户设置(用户名、最近的登录时间等)。我暂时将它们放在从 MvxNotifyPropertyChanged 继承的单例类 AppState 中。所有视图模型都有属性 AppState 来访问共享的应用程序状态,因此任何视图都可以将其控件绑定到 AppState.. 这也适用于设计时模型。
我已经在几个平台上进行了测试(还没有尝试过非 Windows 平台),它按预期工作。但我没有测试生命周期场景,例如墓碑/脱水。基本上,我的视图中有一些部分绑定到单例的属性。是否有与视图模型生命周期相关的警告?
此外,如果可以接受使用此类单例,我可以使用单例模式或 MvvmCross 依赖注入 (MvxResolve)。从技术上讲,它是相同的,那么这两种方法有什么优势吗?