私はスレッドの代わりにRxAndroidを使用しています。 そして私はioスレッドでそれを購読しましたが、メインスレッドで実行されることがありました。 ログがメインスレッドで印刷されることがありました。 logcatでなぜmainthreadでSchedulers.io()が動作するのですか?
Observable.from(bitmaps.toArray(new Bitmap[0]))
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.zipWith(Observable.range(0, bitmaps.size()), new Func2<Bitmap, Integer, Boolean>() {
@Override
public Boolean call(Bitmap bitmap, Integer i) {
Log.i("==", "" + i);
return true;
}
})
.last()
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean aBoolean) {
}
});
2スレッド:
04-28 14:33:14.696 7215-23795/ Thread: RxCachedThreadScheduler-1
04-28 14:33:19.811 7215-7215/ Thread: main
ソリューション: 私はzipWith(後subscribeOn()を移動します)、それは[OK]を実行します。
Observable.from(bitmaps.toArray(new Bitmap[0]))
.zipWith(Observable.range(0, bitmaps.size()), new Func2<Bitmap, Integer, Boolean>() {
@Override
public Boolean call(Bitmap bitmap, Integer i) {
Log.i("==", "" + i);
return true;
}
}).subscribeOn(Schedulers.io())
.last()
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean aBoolean) {
}
});
ええ、あなたは正しいです! – 0Kai