1

对于任何有这个问题的人,

根据 Android 文档,

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

文档可以在这里找到: https ://developer.android.com/topic/libraries/architecture/viewmodel.html

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

4

1 回答 1

15

扩展我的评论:

AndroidViewModelextends ViewModel,所以它具有所有相同的功能。AndroidViewModel 唯一添加的功能是它是上下文感知的:初始化 AndroidViewModel 时,您必须将Application上下文作为参数传递。

作为一个有用的示例,您可以显示需要应用程序上下文的 toast。

于 2017-07-11T06:49:16.133 回答