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