阅读 Android 的新架构组件,建议使用各种 ViewModel 实例将数据提供给活动和片段。
还有从单个持久模型驱动数据的概念:
第二个重要原则是您应该从模型驱动您的 UI,最好是持久模型。持久性是理想的原因有两个:如果操作系统破坏您的应用程序以释放资源,您的用户不会丢失数据,并且即使网络连接不稳定或未连接,您的应用程序也将继续工作。模型是负责处理应用程序数据的组件。它们独立于应用程序中的视图和应用程序组件,因此它们与这些组件的生命周期问题隔离。
还有一个类似的单一事实来源的概念:
在此模型中,数据库充当单一事实来源,应用程序的其他部分通过存储库访问它。无论您是否使用磁盘缓存,我们都建议您的存储库将数据源指定为应用程序其余部分的唯一真实来源。
在我看到的代码示例中,它们确实将 savedInstanceState 包传递给超类的实现,例如:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String userId = getArguments().getString(UID_KEY);
viewModel = ViewModelProviders.of(this).get(UserProfileViewModel.class);
viewModel.init(userId);
}
但是,我们的活动似乎没有理由再显式地将重要值存储到/从已保存实例状态中获取/检索。
savedInstanceState 与新架构无关吗?