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!
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!
Ich versuche, den Unterschied zwischen der Ackdeadline -Eigenschaft im Abonnement und der Ackdeadline -Eigenschaft auf dem Abonnenten zu verstehen. Es ist klar, dass die Ackdeadline im Abonnement der...
Ich verwende Laravel 8 als mein Framework. Ich arbeite derzeit mit API Mobile und möchte dafür sorgen, dass die Daten immer gleichzeitig mit der Datenbank aktualisiert werden.
Was muss ich tun, damit...
Gibt es eine Möglichkeit, Psalm oder PHPStan anzuweisen, sicherzustellen, dass alle aktualisierten Methoden auch aktualisierte DocBlocks erhalten?
Dies ist eine häufige Herausforderung in...
Bitte erklären Sie, warum beim Aktualisieren von Markierungen auf der Karte alle Cluster für einen Moment verschwinden und dann wieder auftauchen. Wie erstelle ich Markierungsaktualisierungen für den...