在视图模型中执行多个异步操作并使用MVVM更新视图

时间:2019-01-09 19:49:58

标签: android asynchronous mvvm kotlin android-viewmodel

让我们假设我们有一个带有3个隐藏按钮的Activity,并且它有一个viewModel,它在后台有3个不同的操作。完成后的每个操作都会向“视图”发送信号以显示其按钮。

  

活动

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

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

  

单个可观察参数?

     

多个可观察,每个操作一个?

     

其他?

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

0 个答案:

没有答案