About MVVM with new architecture components, I\'ve a question, how should I implement if my app needs to display for example a Dialog with 3 options from some action that ha
In Android, most commonly the communication from the ViewModel to the view (Activity/Fragment) is through observing LiveData value. In ViewModel set MutableLiveData value and expose it to the view as LiveData to observe. This is handy when reacting to some state change. Set state persists and is relevant until the next change. It's handy for instance with configuration changes, our view state is preserved in the ViewModel.
But sometimes this is not desirable - with "brief" or "stateless" actions - which only briefly change the state of the UI and are relevant only at the time when action happened - such as action to show a message (be it a toast or a snackbar) - we don't want to re-show an error message 10 min later just because screen rotation occurred; or a navigation action - we don't want to reopen another screen on top. These can be handled with SingleLiveEvent pattern as described in Jose Alcérreca's answer.
I have created a small library for easy implementation for sending such actions - called "brief actions" - actions, not events, because events are something we react to and actions we send/initiate.
You can check it out here:
https://bintray.com/vlad-markovic/maven/com.vladmarkovic.briefactions#read
It's also open source; please feel free to contribute:
https://github.com/vlad-markovic/AndroidBriefActions
Import in Gradle with:
implementation "com.vladmarkovic.briefactions:briefactions:$briefActionsVersion"