首页 > 解决方案 > 在 View Model 中执行多个 Async 操作并使用 MVVM 更新 View

问题描述

假设我们有一个带有 3 个隐藏按钮的 Activity,它有一个 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()
    }
}

视图模型

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
        }
}   

我的问题是,我从 ViewModel 为 View 发送 3 个不同的信号,这些信号的调用不会相互重叠。什么是最好的解决方案?

带参数的单个 Observable?

多个 Observable,每个操作一个?

其他的 ?

附加信息:异步任务在后台完成,所有更新都在主线程中完成,我的问题不是关于线程,而是关于观察者

标签: androidasynchronousmvvmkotlinandroid-viewmodel

解决方案


推荐阅读