Я рефакторинг моего проекта Android Java (MVP, RxJava2) для использования MVVM и LiveData. Я прочитал все руководства по MVVM и LiveData, но, похоже, нет мнения о том, как обрабатывать такие вещи, как переход к другому фрагменту на основе завершения эмиссии из ViewModel. В MVP, как правило, презентатор содержит ссылку на представление, основанное на контракте интерфейса. Когда излучение Rx завершается, вы можете ссылаться на представление, чтобы перейти к другому фрагменту. Например:
.doOnComplete(() -> view.navigateToHome())
Большинство примеров с MVVM и LiveData в основном связаны с изменением пользовательского интерфейса. Конечно, вы можете установить LiveData и наблюдать за ним для навигации в другом месте:
// viewmodel
.doOnComplete(() -> navigateHomeLiveData = true)
// fragment
.observe(findNavController.navigate(action))
Но в этой статье говорится, что не следует делать это: LiveData с SnackBar, навигацией и другими событиями (случай SingleLiveEvent)
Далее в статье рекомендуется использовать пользовательский класс Event<T>
, который не является частью какой-либо библиотеки и который мы должны создать вручную. Является ли это наиболее распространенным и общепринятым способом обработки таких вещей с помощью MVVM и LiveData?