ViewModel和AndroidViewModel有什么区别

时间:2017-07-11 06:19:01

标签: android android-mvvm android-architecture-lifecycle

对于有此问题的人,

根据Android文档,

  

由于ViewModel比特定活动和片段实例更长,因此它不应该引用View或任何可能包含对活动上下文的引用的类。如果ViewModel需要Application上下文(例如,查找系统服务),它可以扩展AndroidViewModel类并具有在构造函数中接收Application的构造函数(因为Application类扩展了Context)。

可在此处找到文档: https://developer.android.com/topic/libraries/architecture/viewmodel.html

编辑: 如有重复说明: 我的意思是你可以将类扩展到ViewModel以及AndroidViewModel。当你应该延伸时,上面的解释仅适用于此。上面的链接讲述了MVVM架构的ViewModel,而不是android.arch.lifecycle.ViewModel

1 个答案:

答案 0 :(得分:4)

扩展我的评论:

AndroidViewModel扩展ViewModel,因此它具有所有相同的功能。 AndroidViewModel唯一增加的功能是它可以识别上下文:初始化AndroidViewModel时,您必须将Application上下文作为参数传递。

作为一个有用的例子,您可以显示需要Application上下文的toasts。