Ich verwende RxAndroid, um ein paar Sachen im Hintergrund zu tun. Dies ist mein Code:RxAndroid und Multithreading
Observable<MyClass[]> observable = Observable.create(new Observable.OnSubscribe<MyClass[]>() {
@Override
public void call(Subscriber<? super MyClass[]> subscriber) {
System.out.println(Looper.myLooper() + " - " + Looper.getMainLooper());
try {
MyObject myObject = ...
//do the background work
subscriber.onNext(myObject);
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
e.printStackTrace();
}
}
});
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<MyClass[]>() {
@Override
public void call(MyClass[] myObjects) {
//do work on the ui Thread
}
}
);
Dies ist mein erstes Mal mit RxAndroid/RxJava/Looper.myLooper()/Looper.getMainLooper()
Von dem, was ich höre, Looper.myLooper()
gibt Ihnen den Namen ID des Threads der aktuelle Code läuft auf und Looper.getMainLooper()
gibt Ihnen die ID des Hauptfadens. Wenn ich die App in der SysOut
ausführen, druckt es die gleiche ID für beide aus.
Mache ich etwas falsch oder verkenne ich die 2 Looper-Funktionen?
Hey. Es tut uns leid. War für eine Weile weg. Ich werde das heute Abend ausprobieren und zurück zu dir :) –