我看到了两个名称相似的类ViewModelProviders和ViewModelProvider。谁能解释这些类之间的区别?哪个类实际提供了ViewModel?
最佳答案
ViewModelProviders(属于Maven文物android.arch.lifecycle:extensions)是android.arch.lifecycle
包中的一个类,其中包含ViewModelStore类的实用程序方法,并在您使用ViewModelProvider
方法时返回of()
类的对象。
因此,您可以将其视为ViewModelProvider
的库类包装。
另一方面,ViewModelProvider(属于Maven工件android.arch.lifecycle:viewmodel)是为范围提供ViewModels
的类。因此,它是ViewModelProvider
或Activity
的默认Fragment
,可以从ViewModelProviders
类获取。
所以,是的!这是为ViewModel
提供核心逻辑的主要类,但是您需要从ViewModelProviders
获取它,这将返回这个类以从中获取ViewModel
。
编辑:
在ViewModel version 2.2.0之后:
不推荐使用ViewModelProviders
类,现在我们可以通过创建ViewModelProvider
的新实例来直接使用ViewModel
来获取ViewModelProvider(this).get(SomeViewModel::class.java)
。
像这样:ojit_code