我看到了两个名称相似的类ViewModelProviders和ViewModelProvider。谁能解释这些类之间的区别?哪个类实际提供了ViewModel?

最佳答案

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

10-08 12:09