AndroidViewModel与向ViewModel传递应用程序上下文
缔约国声明如下: 如果ViewModel需要应用程序上下文,例如查找系统服务,则它可以扩展AndroidViewModel类,并在构造函数中具有接收应用程序的构造函数,因为应用程序类扩展了上下文 代码示例:AndroidViewModel与向ViewModel传递应用程序上下文,android,android-architecture-components,Android,Android Architecture Components,缔约国声明如下: 如果ViewModel需要应用程序上下文,例如查找系统服务,则它可以扩展AndroidViewModel类,并在构造函数中具有接收应用程序的构造函数,因为应用程序类扩展了上下文 代码示例: class MainViewModel(application: Application) : AndroidViewModel(application) { ... } 两个问题: 如果我需要将应用程序传递给ViewModel的ctor,AndroidViewModel如何帮助我 同样
class MainViewModel(application: Application) : AndroidViewModel(application) {
...
}
两个问题:
应用程序
传递给ViewModel的ctor,AndroidViewModel如何帮助我应用程序
,为什么我需要AndroidViewModel?我可以使用ViewModel并将其传递给应用程序您可以编写自定义的
ViewModel
,而无需扩展AndroidViewModel
,并且它在功能上是相同的
唯一的区别是默认的
ViewModelFactory
检查ViewModel
是否是AndroidViewModel
的一个实例,并调用一个参数构造函数自动向下传递应用程序
上下文。您可以编写自定义的ViewModel
,而不扩展AndroidViewModel
功能相同
唯一的区别是默认的
ViewModelFactory
检查ViewModel
是否是AndroidViewModel
的实例,并调用一个参数构造函数自动向下传递应用程序
上下文。如果您提供自己的工厂,您可以将任何需要的内容传递给常规的ViewModel
对象,这一点您是正确的
但是,如果您使用的是默认工厂,则显示默认工厂仅为您填写
应用程序
实例,如果您的ViewModel扩展了AndroidViewModel
,如果您提供自己的工厂,您可以将任何想要的内容传递给常规的ViewModel
对象,你说得对
但是,如果您使用的是默认工厂,则显示默认工厂仅为您填写
应用程序
实例,如果您的ViewModel扩展了AndroidViewModel
,“如果我仍然需要将应用程序传递给ViewModel的ctor,AndroidViewModel如何帮助我?”--您没有将应用程序
传递给视图模型
构造函数,因为您没有调用视图模型
构造函数。工厂是。“如果我需要将应用程序传递给ViewModel的ctor,AndroidViewModel如何帮助我?”--您没有将应用程序
传递给ViewModel
构造函数,因为您没有调用ViewModel
构造函数。一家工厂正在建造中。