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

时间:2017-10-13 12:36:47

标签: java android android-lifecycle android-architecture-components

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

他们提供ViewModelAndroidViewModel

以避免配置更改问题的组件之一

根据文件:

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

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

但对于AndoirdViewModel场景,我可以通过将类扩展到Application类

来获取应用程序上下文

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

1 个答案:

答案 0 :(得分:9)

  

但对于AndoirdViewModel场景,我可以通过将类扩展到Application类

来获取应用程序上下文

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

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

  

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

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