This repository was archived by the owner on Jun 20, 2023. It is now read-only.
Adds bindings for android.arch.lifecycle:extensions:1.0.0 #79
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
Support Libraries Version (eg: 23.3.0):
26.1.0
Does this change any of the generated binding API's?
It only adds a new binding project for android.arch.lifecycle:extensions:1.0.0
Describe your contribution
As mentioned in #76 - being able to reference the new
ViewModelProviderfrom Architecture Components (which can be found inandroid.arch.lifecycle:extensions) allows proper handling of the .NETViewModel's lifecycle in relation to theActivity / Fragment's lifecycle (such as having theViewModelsurvive during configuration changes such as screen rotation).This is an usage example (that leverages MvvmLight):
Your MvvmLight ViewModel:
And your activity:
When you'll rotate your screen you'll notice that
System.Diagnostics.Debug.WriteLine($"Activity random is {Random}, View Model random is: {viewModel.Random}");prints a different number for theActivity- as it gets recreated, but it prints the same number forMainViewModelsince it's kept alive during configuration changes.Please review this thoroughly as I'm coming from an iOS / Android native background development so there are changes that I might have missed some things.