Выполните несколько асинхронных операций в View Model и обновите View, используя MVVM - PullRequest
0 голосов
/ 09 января 2019

давайте предположим, что у нас есть Activity с 3 скрытыми кнопками, и у него есть viewModel, которая выполняет 3 различных операции в фоновом режиме. Для каждой операции, когда она выполнена, она посылает сигнал в View, чтобы показать его кнопку.

Активность

class MyActivity  : BaseAppCompatActivity()  {

    private lateinit var viewModel: MyViewModel

    //this method called by onCreate
    override fun initViews(binding: ViewDataBinding) {
        viewModel = ViewMode()
    }

    fun WhenEventAHappens() {
        viewModel.performA()
    }

    fun WhenEventBHappens() {
        viewModel.performB()
    }

    fun WhenEventCHappens() {
        viewModel.performC()
    }
}

ViewModel

class MyViewModel  : BaseViewModel()  {

    fun performA(){
            //Do some staff
            //Update UI : Show button A
        }

    fun performB(){
            //Do some staff
            //Update UI : Show button B
        }

    fun performC(){
            //Do some staff
            //Update UI : Show button C
        }
}   

У меня вопрос: я посылаю 3 разных сигнала из ViewModel для View, вызов этих сигналов не будет перекрывать друг друга. какое лучшее решение?

Один наблюдаемый с параметрами?

Несколько наблюдаемых, по одному на каждую операцию?

Другие?

Дополнительная информация: асинхронные задачи выполняются в фоновом режиме, а все обновления выполняются в главном потоке, мои вопросы не о потоке, а о наблюдателях

...