Java Android架构组件中AndroidViewModel和ViewModel的区别是什么?
我已经在Android架构组件上工作了一段时间,该组件是在Google IO 2017中引入的 为了避免配置更改,他们提供了Java Android架构组件中AndroidViewModel和ViewModel的区别是什么?,java,android,android-lifecycle,android-architecture-components,Java,Android,Android Lifecycle,Android Architecture Components,我已经在Android架构组件上工作了一段时间,该组件是在Google IO 2017中引入的 为了避免配置更改,他们提供了ViewModel和AndroidViewModel类 根据文件: AndroidViewModel:应用程序上下文感知ViewModel ViewModel:ViewModels还可以用作活动不同片段之间的通信层。每个片段都可以通过其活动使用相同的键获取ViewModel 但对于和OIRDViewModel场景,我可以通过将类扩展到应用程序类来获取应用程序上下文 在And
ViewModel
和AndroidViewModel
类
根据文件:
AndroidViewModel:应用程序上下文感知ViewModel
ViewModel:ViewModels还可以用作活动不同片段之间的通信层。每个片段都可以通过其活动使用相同的键获取ViewModel
但对于和OIRDViewModel
场景,我可以通过将类扩展到应用程序类来获取应用程序上下文
在Android开发中,它们之间的实际区别是什么?因为两者都只附加到活动/片段生命周期
但对于AndoirdViewModel场景,我可以通过将类扩展到应用程序类来获取应用程序上下文
创建自己的应用程序的自定义子类
不会神奇地使该单例实例可用于视图模型
可以创建Application
的自定义子类,该子类有自己的getInstance()
方法或直接公开单例的东西。谷歌不喜欢这种模式(我也不喜欢),因此谷歌不会引导开发者使用它
在Android开发中,它们之间的实际区别是什么
ViewModel
本身没有获得上下文的好方法AndroidViewModel
提供了一个应用程序
用作上下文
,并专门提供了应用程序
单例,因此我们确信上下文
本身并不表示内存泄漏。您在同一问题中提出了两个问题,我相信您可以切换标题,集中讨论为什么使用AndroidViewModel而不是扩展应用程序。@commonware给出的答案仍然有效。通过这种方式,您可以要求删除“重复”标记,因为创建一个新问题可以获得一个好的答案。。。我认为这不是一个好主意。出于好奇,为什么谷歌(或你)不喜欢getInstance()应用程序的子类?@neteinstein:我不能代表谷歌说话。我不是一个粉丝,因为它使得使用应用程序
太容易了,而且很多时候应用程序
使用的上下文
类型是错误的。