我正在處理這個問題。BlockingGet塊UI線程RxJava 2
我試圖打電話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();
}
但它劇照仍然受阻。
什麼我做錯了,我會很感謝任何幫助。
謝謝。
阻塞所有將阻塞,直到有數據。不要在UI線程上使用一個。要麼有另一個線程執行它,要麼使用非阻塞調用。 –
究竟是什麼問題? 'blockingGet()'調用會阻塞_current_線程直到數據可用,這是預期的行爲。你想實現什麼? –
@GergelyKőrössy,它不會得到釋放導致我的線程卡住 – bxfvgekd