我应该使用 ViewModelProvider 而不是 ViewModelProviders 吗?如果是这样,为什么?

Should I be using ViewModelProvider instead of ViewModelProviders? If so, why?

所以我一直在关注 Android ViewModel 概述,因为我需要在片段之间进行通信,在创建 ViewModel 时,它使用 ViewModelProviders,这需要您添加依赖项。在查看 ViewModelProviders 的文档时,我看到了这个:

我应该继续按照概述添加所需的依赖项,还是应该修改它以使用 ViewModelProvider?两者都有什么好处?

谢谢。

我对此的看法是尽可能避免使用已弃用的方法。对此有很好的讨论here。 至于好处,我认为后者可能更好,因为它是最近迭代的一部分。我已经尝试过使用无限垂直滚动的 recyclerView,并且我没有注意到命名的一部分有什么大的不同。

您应该避免使用已弃用的 API。弃用意味着它计划被删除并且不会被维护。

如果您检查添加弃用的提交:https://android-review.googlesource.com/c/platform/frameworks/support/+/1009889/6

如果您检查已弃用提交的差异,您可以看到 ViewModelProviders.of 在内部使用建议的 API。 (see diff)

发行说明:https://developer.android.com/jetpack/androidx/releases/lifecycle#2.2.0-alpha03

ViewModelProviders.of() has been deprecated. You can pass a Fragment or FragmentActivity to the new ViewModelProvider(ViewModelStoreOwner) constructor to achieve the same functionality.

所以这意味着您可以使用构造函数而不是 ViewModelProviders.of() 来实现完全相同的事情。