rxandroid bittet darum, auf ui thread zu laufen, obwohl es auf AndroidSchedulers.mainThread () abonniert ist

10

Ich habe einen Abonnenten geschrieben, der ausgelöst wird, wenn google map OnCameraChangeListener ausgelöst wird.

%Vor%

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

    
rakesh kashyap 03.05.2016, 05:53
quelle

2 Antworten

24

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:

%Vor%

Je nachdem, wo Sie Ihre Benachrichtigungsquelle erstellen, benötigen Sie möglicherweise auch observeOn und subscribeOn überhaupt nicht.

    
akarnokd 03.05.2016, 07:15
quelle
0

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:

%Vor%

Debounce sollte auf dem ComputationScheduler statt auf dem Hauptthread ausgeführt werden.

    
vedant1811 11.04.2018 11:14
quelle

Tags und Links