RyanJ
RyanJ

Reputation: 158

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

So I have been following the Android ViewModel Overview as I need to communicate between fragments, when creating the ViewModel, it uses ViewModelProviders which requires you to add dependencies. Upon looking at the documentation for ViewModelProviders I saw this: Deprecation message

Should I continue to follow the Overview, adding the required dependencies, or should I modify it to use ViewModelProvider? What are the benefits of either?

Thank you.

Upvotes: 1

Views: 246

Answers (2)

Giorgos Neokleous
Giorgos Neokleous

Reputation: 1777

You should avoid using deprecated APIs. Deprecation means that it's planned to be removed and it's not going to be maintained.

If you check the commit that added deprecation: https://android-review.googlesource.com/c/platform/frameworks/support/+/1009889/6

If you check the diff of the deprecated commit you can see that ViewModelProviders.of internally uses the suggested API. (see diff)

Release notes: 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.

So what that means is that you can achieve exactly the same thing using the constructor instead of the ViewModelProviders.of().

Upvotes: 2

Maxime Claude
Maxime Claude

Reputation: 995

My take on this is to avoid using deprecated methods as much as possible. There is a good discussion about it here. As to benefits, I think the later might be better because is it part of a more recent iteration. I have tried both with an infinite vertical scrolling recyclerView, and I have not notice any big difference a part from the naming.

Upvotes: 1

Related Questions