This question already has answers here:
AndroidViewModel vs ViewModel

(3 个回答)


3年前关闭。




我一直在研究 Android 架构组件,这是在 Google IO 2017 中引入的

他们的组件之一是为了避免配置更改问题,他们提供了 ViewModelAndroidViewModel

根据文档:

AndroidViewModel :可识别应用程序上下文的ViewModel
ViewModel : ViewModels 也可以作为一个 Activity 的不同 Fragment 之间的通信层。每个 Fragment 可以通过它们的 Activity 使用相同的 key 获取 ViewModel
但是对于 AndoirdViewModel 场景,我可以通过将类扩展到 Application 类来获取应用程序上下文

它们在 Android 开发中的实际区别是什么?因为两者都只附加到 Activity/Fragment 生命周期。

最佳答案



创建自己的Application的自定义子类不会神奇地使该单例实例可用于ViewModel

可以创建 Application 的自定义子类,该子类具有自己的 getInstance() 方法或直接公开单例的方法。 Google不喜欢这种模式(我也不喜欢这种模式),因此Google不会引导开发人员使用它。


ViewModel 本身没有获得 Context 的好方法。 AndroidViewModel 提供一个 Application 用作 Context ,并且专门提供 Application 单例,所以我们确信 Context 本身不代表内存泄漏。

10-07 19:28