2017-10-27 3 views
0

Activity.runOnUiThread() hat dies:RxJava Immediate-wie Scheduler

if (Thread.currentThread() != mUiThread) { 
    mHandler.post(action); 
} else { 
    action.run(); 
} 

Es bedeutet, es läuft Aktion sofort, wenn ich in UI-Thread und Beiträge Aktion bin Handler, wenn ich nicht bin. Ich suche RxJava Scheduler wie diese Funktionalität. Gibt es es?

+0

Mögliche Duplikat [RxJava Timer, der für immer wiederholt und neu gestartet und gestoppt jederzeit werden kann] (https://stackoverflow.com/questions/38605090/rxjava-timer-that-repeats-forever-and- kann-sein-Neustart-and-gestoppt-at-jederzeit) –

+0

Das Problem sofort ausgeführt ist, dass, wenn, dass 'Runnable' auch Pläne auf dem Haupt-Thread, erhalten Sie eine Rekursion, die Stackoverflow oder einfach aufgeben wird nicht führen kann der Hauptthread für andere Aufgaben. – akarnokd

+0

@akarnokd Sorry, aber ich kann dich nicht verstehen. Kannst du ein Beispiel geben? –

Antwort

1

Ja, es ist einfach.

getSomeObservable().observeOn(AndroidSchedulers.mainThread()) 

nach .observeOn (AndroidSchedulers.mainThread()) Sie Ihre beobachtbare abonnieren und Rückrufe werden in Hauptthread kommen.

.subscribe(new Subscriber<Object>() { 
       @Override 
       public void onCompleted() { 
        Log.i(TAG,Thread.currentThread().getName()); 
       } 

       @Override 
       public void onError(Throwable e) { 
        Log.i(TAG,Thread.currentThread().getName()); 
       } 

       @Override 
       public void onNext(Object o) { 
        Log.i(TAG,Thread.currentThread().getName()); 
       } 
      }); 
+0

Die 'AndroidSchedulers.mainThread' [immer Beiträge] (https://github.com/ReactiveX/RxAndroid/blob/2.x/rxandroid/src/main/java/io/reactivex/android/schedulers/HandlerScheduler.java# L72), auch wenn der Aufruf 'schedule' im Hauptthread ist. – akarnokd

+0

Ja, ich verstehe. Mai sein Observable.just() wird Suite, wie ich es weiß, Aktion sofort zu tun. –

+0

'nur' läuft nicht auf einem bestimmten Scheduler. Sie benötigen einen Operator, der Subskription/Beobachtung in den Hauptthread verschieben kann. – akarnokd

Verwandte Themen