android - 在 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,每个操作一个?
其他的 ?
附加信息:异步任务在后台完成,所有更新都在主线程中完成,我的问题不是关于线程,而是关于观察者
解决方案
推荐阅读
- elasticsearch - 如何按对象值字段过滤 Elasticsearch
- api - 为什么我的 POST 请求仅对我的 API 不起作用?
- excel - 数据验证时突出显示正确的单元格
- r - 为什么我得到的平均值高于数据集中应有的最高值?
- c# - Office GraphAPI SMTP - 需要帮助为 .netcore 构建 C# 代码以发送电子邮件:
- c++ - 将 Ofstream 移动到类 c'tor
- python - 如何根据来自其他两列的值的分组总和创建新的值列?
- javascript - 如何在 Windows 10 上使用 Open 包启动 Edge
- python - 在导入tensorflow的过程中,每次都会出现这个错误。我确实尝试卸载然后再次安装。它仍然给出同样的错误
- html - 在没有最大宽度的情况下右对齐图像