我已经在Android架构组件上工作了一段时间,这是在Google IO 2017中引入的
他们提供ViewModel
和AndroidViewModel
类
根据文件:
AndroidViewModel :应用程序上下文感知ViewModel
ViewModel :ViewModels还可以用作Activity的不同片段之间的通信层。每个片段可以通过其活动使用相同的键获取ViewModel
但对于AndoirdViewModel
场景,我可以通过将类扩展到Application类
Android开发中它们之间的实际区别是什么?因为两者都只附加到Activity / Fragment生命周期。
答案 0 :(得分:9)
但对于AndoirdViewModel场景,我可以通过将类扩展到Application类
来获取应用程序上下文
创建自己的Application
自定义子类并不会奇怪地使该单例实例可用于ViewModel
。
可以创建Application
的自定义子类,它具有自己的getInstance()
方法或直接公开单例的东西。谷歌不喜欢这种模式(我也不喜欢这种模式),因此谷歌不会引导开发者使用它。
Android开发中它们之间的实际区别是什么?
ViewModel
本身没有办法获得Context
。 AndroidViewModel
提供Application
用作Context
,并专门提供Application
单例,因此我们确信Context
本身并不代表内存泄漏