gpt4 book ai didi

android - 发布多个 MutableLiveData 没有顺序

转载 作者:行者123 更新时间:2023-12-03 10:31:44 48 4
gpt4 key购买 nike

我在 MVVM 架构上使用多个 MutableLiveData。
在 ViewModel 上,我发布了对象,但 fragment 没有恢复。
当 fragment 恢复时,观察者得到 MutableLiveData 但不是按照我发布它们的顺序。
如何强制获取 MutableLiveData 的命令?

View 模型:

void foo(){

first_MutableLiveData.post(newData)

second_MutableLiveData.post(newData)

}

分段:
initView(){

first_MutableLiveData.observe(this,()->{
"getting called second"})

second_MutableLiveData.observe(this,()->{
"getting called first"})

}

最佳答案

你不能强制你想要的。从代码中可以看出,他们通过调用将结果发布到 MainThread:

ArchTaskExecutor.getInstance()  

所以现在有人会费心支持两个不同的 LiveData 对象之间的同步。这样做是你的工作。这是一个角落案例。

只需在 MainThread 上直接使用 setValue,而不是 postValue。这是一个例子。

公共(public)类 MainThreadExecutor 实现 Executor {
    private final Handler handler = new Handler(Looper.getMainLooper());

@Override
public void execute(Runnable runnable) {
handler.post(runnable);
}
}

public class YourClass {

MutableLiveData first_MutableLiveData = new MutableLiveData<Data>();
MutableLiveData second_MutableLiveData = new MutableLiveData<Data>();


private final Executor executor;

public YourClass(Executor executor) {
this.executor = executor;
}


void foo(){

executor.execute(new Runnable(){
@Override
public void run() {
first_MutableLiveData.setValue(newData);
second_MutableLiveData.setValue(newData);
}
});

}

}

关于android - 发布多个 MutableLiveData 没有顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58322456/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com