давайте предположим, что у нас есть 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, вызов этих сигналов не будет перекрывать друг друга. какое лучшее решение?
Один наблюдаемый с параметрами?
Несколько наблюдаемых, по одному на каждую операцию?
Другие?
Дополнительная информация: асинхронные задачи выполняются в фоновом режиме, а все обновления выполняются в главном потоке, мои вопросы не о потоке, а о наблюдателях