Page 1 of 1

Rxjava verhaltensubject.onnext () wird aufgerufen, aber der Abonnent erhält keine Aktualisierungen

Posted: 14 Feb 2025, 02:02
by Guest
Ich versuche, Hintergrundabfragen in einer auf Rxjava basierenden Android-Anwendung zu implementieren, wobei: < /p>

Ein Repository alle 10 Sekunden regelmäßig Daten von einer API abgerufen und emittiert ab Aktualisierungen über ein Verhaltensunterschied. Das Problem: < /p>

Das Repository ruft Onnext () zum Verhalten auf Die emittierten Werte (der Abonnementblock wird nie ausgeführt). < /li>
Es werden keine Fehler geworfen. Beispiel) < /H2>
Repository-Abruft Daten und emittiert über das Verhalten < /h4>
@Singleton
class MyRepository @Inject constructor(
private val apiService: ApiService
) {
private val pollingDisposable = SerialDisposable()
private val subject = BehaviorSubject.create()

fun watchData(): Observable = subject.hide()

fun startPolling() {
Observable.interval(10, TimeUnit.SECONDS, Schedulers.io())
.flatMapSingle {
fetchDataFromApi()
.map { Optional(it) }
.onErrorReturn { Optional(null) }
}
.subscribe(
{ data ->
subject.onNext(data) // This is getting called
},
{ error -> error.printStackTrace() }
)
.into(pollingDisposable)
}

private fun fetchDataFromApi(): Single {
return apiService.getData().subscribeOn(Schedulers.io())
}
}
< /code>

Präsentator-Abonniert die Daten < /h4>
class MyPresenter @Inject constructor(
private val repository: MyRepository
) : RxPresenter() {

override fun onStart() {
super.onStart()

repository.startPolling() // Start polling when presenter starts

disposeBag += repository.watchData()
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ optionalData ->
Log.d("PRESENTER_DEBUG", "Received new data: $optionalData") // Never gets called
if (optionalData.value != null) {
updateUI(optionalData.value)
}
}, { error ->
Log.e("PRESENTER_DEBUG", "Error receiving data", error) // Never gets called
})
}

private fun updateUI(data: Data) {
// UI update logic
}
}
< /code>
Was ich ausprobiert habe < /h3>

bestätigte, dass Onnext () < /li>
genannt wird Subjekt genannt. (seltsam) < /li>
< /ol>
Frage laut Obwohl der Moderator abonniert werden sollte? .
Jede Hilfe oder Debugging -Vorschläge wären sehr geschätzt!