我正在使用RxAndroid在後臺做一些東西。這是我的代碼:RxAndroid和多線程
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
}
}
);
這是我第一次使用RxAndroid/RxJava/Looper.myLooper()/Looper.getMainLooper()
從什麼,我說,Looper.myLooper()
爲您提供了線程的名稱標識當前的代碼運行並Looper.getMainLooper()
給你的ID的主線程。當我運行應用程序時,在SysOut
中,它會爲它們打印出相同的ID。
我做錯了什麼或者我誤解了2 Looper功能?
嘿。抱歉。已經離開了一段時間。我今晚會嘗試一下,回到你身邊:) –