Ich habe einen Abonnenten geschrieben, der ausgelöst wird, wenn google map OnCameraChangeListener
ausgelöst wird.
Ich aktualisiere die Standortmarkierung wie folgt:
%Vor% Obwohl mein Code sagt, dass er auf AndroidSchedulers.mainThread()
laufen soll, erhalte ich folgende Fehlermeldung:
Erstellt von: rx.exceptions.OnErrorNotImplementedException: Nur der ursprüngliche Thread, der eine Ansichtshierarchie erstellt hat, kann seine Ansichten berühren.
Kann jemand bitte mir helfen zu verstehen, was das Problem mit meinem Ansatz ist
Der Operator debounce
wird standardmäßig im Berechnungs-Scheduler ausgeführt, wo er die durchlaufenden Ereignisse liefert. Sie müssen es mit dem Haupt-Thread-Scheduler parametrisieren:
Je nachdem, wo Sie Ihre Benachrichtigungsquelle erstellen, benötigen Sie möglicherweise auch observeOn
und subscribeOn
überhaupt nicht.
Die angenommene Antwort ist nicht der richtige Weg. Das richtige war, observeOn(AndroidSchedulers.mainThread())
nach debounce(1, TimeUnit.SECONDS)
zu platzieren. Dein Code wird also:
Debounce sollte auf dem ComputationScheduler
statt auf dem Hauptthread ausgeführt werden.