我正在处理这个问题。
我试图以同步方式调用RxJava,但这样做会导致主线程阻塞。
以下是我的代码:
@Override
public Single<SettingsBundle> getSettings() {
SettingsBundle settingsModel = mSettingsManager.getSettings();
return Single.just(settingsModel).map(mSettingsMapper);
}
这是我的同步调用:
@Override
public SettingsBundle getSettingsSync() {
return getSettings().blockingGet();
}
调用getSettingsSync
时,主线程会被阻塞,但有时它能正常工作,这更具问题性。
我尝试过类似的东西
@Override
public SettingsBundle getSettingsSync() {
return getSettings()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.blockingGet();
}
但它仍然被阻止了。
我做错了什么,如果有任何帮助,我将不胜感激。
谢谢。
blockingGet()
调用会阻塞 当前 线程,直到数据可用,这是预期的行为。你想要实现什么? - Gergely KőrössyblockingGet
。 - EpicPandaForce