android RxJava -如何避免这种争用情况?

uklbhaso  于 2023-03-06  发布在  Android
关注(0)|答案(1)|浏览(128)
    • bounty将在6天后过期**。回答此问题可获得+50的声望奖励。DIRTY DAVE正在寻找规范答案

我尝试在后台线程上将一些数据插入到本地数据库中,其中Completeable位于ViewModel的构造函数中

public MainViewModel() extends ViewModel {

    public MainViewModel(){
        localRepository.insertValueIntoDatabase().subscribeOn(Schedulers.io())
                    .subscribe(() -> {
                        sharedPrefManager.setAnotherValue(true);
                    }, throwable -> {
                        Timber.e(throwable, "Failed to insert into DB");
                    });
    }
}

在我的MainActivity中,我还在构造MainViewModel之后调用了一个方法,该方法将基于构造函数中插入的值执行查询。
x一个一个一个一个x一个一个二个x
如果localRepository.insertValueIntoDatabase()花了10秒钟插入,
如何使performQueryWithValue()方法在执行查询之前等待插入完成?

bmp9r5qi

bmp9r5qi1#

insertValueIntoDatabase执行成功后可以调用performQueryWithValue()方法,如下所示:

localRepository.insertValueIntoDatabase()
        .subscribeOn(Schedulers.io())
        .subscribe(() -> {
            sharedPrefManager.setAnotherValue(true);
            performQueryWithValue();
        }, throwable -> {
            Timber.e(throwable, "Failed to insert into DB");
        });

相关问题