Lifecycle aware MVP is a good solution.
As you know Architecture Components introduce LiveData, a lifecycle-aware observable data holder class - the idea is great and sounds super handy.
AC causes some "additional code to handle null case in our onChanged implementations" and also it's "harder to read and understand the flow" in the code.
Lifecycle aware MVP solve mentioned issues with these benefits:
- solve the lifecycle and configuration changes problems,
- clear and explicit View actions, like in classic MVP
- no LiveData and no Resource’s state handling in Activities or Fragments
- it’s easier to pass any necessary parameters straight to view methods (directly communicating with the view)
so if you have an existing MVP architecture and want to make use of ViewModels and their handling of configuration changes, this is an easy way to do achieve it
you can find more about it here.