AndroidViewModel 与将应用程序上下文传递给 ViewModel

Ref*_*ker 1 android android-architecture-components

文件规定如下:

如果 ViewModel 需要 Application 上下文,例如查找系统服务,它可以扩展 AndroidViewModel 类并在构造函数中有一个接收 Application 的构造函数,因为 Application 类扩展了 Context。

代码示例:

class MainViewModel(application: Application) : AndroidViewModel(application) {
... 
}
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 如果我需要传递Application给 ViewModel 的 ctor ,AndroidViewModel 如何帮助我?
  2. 再说一次,如果我需要通过Application,为什么我需要 AndroidViewModel?我可以只使用 ViewModel 并传递它Application

ian*_*ake 6

如果您提供自己的工厂,则可以将任何您想要的东西传递给常规ViewModel对象,您对此是正确的。

但是,如果您使用默认工厂,则源代码显示默认工厂Application您的 ViewModel 扩展时为您填充实例AndroidViewModel