ViewModel和AndroidViewModel有什么区别

use*_*816 0 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

小智 8

扩展我的评论:

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

作为一个为什么有用的示例,您可以显示需要Application上下文的敬酒。