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

Forum für diejenigen, die für Android programmieren
Guest
 Rxjava verhaltensubject.onnext () wird aufgerufen, aber der Abonnent erhält keine Aktualisierungen

Post 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!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post