首页 文章

Android架构组件中的AndroidViewModel和ViewModel有什么区别? [重复]

提问于
浏览
2

这个问题在这里已有答案:

我已经在Android架构组件上工作了一段时间,这是在Google IO 2017中引入的

他们的一个组件是避免配置更改问题,它们提供 ViewModelAndroidViewModel

根据文件:

AndroidViewModel :应用程序上下文感知 ViewModel

ViewModel :ViewModels也可以用作Activity的不同片段之间的通信层 . 每个片段可以通过其Activity使用相同的键获取 ViewModel

但是对于 AndoirdViewModel 场景,我可以通过将类扩展到Application类来获取应用程序上下文

Android开发中它们之间的实际区别是什么?因为两者仅附加到Activity / Fragment生命周期 .

1 回答

  • 9

    但是对于AndoirdViewModel场景,我可以通过将类扩展到Application类来获取应用程序上下文

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

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

    Android开发中它们之间的实际区别是什么?

    ViewModel 本身没有办法获得 Context . AndroidViewModel 提供 Application 用作 Context ,并专门提供 Application 单例,因此我们确信 Context 本身不代表内存泄漏 .

相关问题