Je suis confronté au problème.BlockingGet thread UI thread RxJava 2
J'essaie d'appeler RxJava à la manière de la synchronisation, mais cela entraîne le blocage du thread principal.
Voici mon code
@Override
public Single<SettingsBundle> getSettings() {
SettingsBundle settingsModel = mSettingsManager.getSettings();
return Single.just(settingsModel).map(mSettingsMapper);
}
Et voici mon appel de synchronisation
@Override
public SettingsBundle getSettingsSync() {
return getSettings().blockingGet();
}
Lorsque vous appelez le getSettingsSync
le thread principal est bloqué, mais parfois, il fonctionne très bien, ce qui est plus problématique.
J'ai essayé quelque chose comme ça
@Override
public SettingsBundle getSettingsSync() {
return getSettings()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.blockingGet();
}
Mais il Stills reste bloqué. Ce que je fais mal, je serais reconnaissant pour toute aide.
Merci.
Un blocage bloquera jusqu'à ce qu'il y ait des données. N'utilisez pas un sur le fil de l'interface utilisateur. Utilisez un autre thread ou utilisez un appel non bloquant. –
Quel est votre problème exactement? L'appel 'blockingGet()' bloquera le thread _current_ jusqu'à ce que les données soient disponibles, c'est le comportement attendu. Que veux-tu accomplir? –
@ GergelyKőrössy, il n'est pas libéré ce qui bloque mon thread – bxfvgekd