码迷,mamicode.com
首页 > 编程语言 > 详细

RxJava线程控制

时间:2017-10-11 11:13:39      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:span   map   sub   线程   一行代码   android   主线程   serve   com   

Observable.just(1, 2, 3, 4)
    .subscribeOn(Schedulers.io()) // 指定 subscribe() 发生在 IO 线程
    .observeOn(AndroidSchedulers.mainThread()) // 指定 Subscriber 的回调发生在主线程
    .subscribe(new Action1<Integer>() {
        @Override
        public void call(Integer number) {
            Log.d(tag, "number:" + number);
        }
    });

 

通过compose操作符完成线程切换

public class SchedulerTransformer<T> implements Observable.Transformer<T, T> {

    @Override
    public Observable<T> call(Observable<T> observable) {
        return observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());
    }

    public static <T> SchedulerTransformer<T> create() {
        return new SchedulerTransformer<>();
    }
}

 使用:

Observable.just(1, 2, 3, 4)
    .compose(SchedulerTransformer.<Integer>create())  //一行代码实现线程切换
     .subscribe(new Action1<Integer>() { @Override public void call(Integer number) { Log.d(tag, "number:" + number); } });

 

线程的自由切换

Observable.just(1, 2, 3, 4) // IO 线程,由 subscribeOn() 指定
    .subscribeOn(Schedulers.io())
    .observeOn(Schedulers.newThread())
    .map(mapOperator) // 新线程,由 observeOn() 指定
    .observeOn(Schedulers.io())
    .map(mapOperator2) // IO 线程,由 observeOn() 指定
    .observeOn(AndroidSchedulers.mainThread) 
    .subscribe(subscriber);  // Android 主线程,由 observeOn() 指定
 
通过 observeOn() 的多次调用,程序实现了线程的多次切换。
不同于 observeOn() , subscribeOn() 的位置放在哪里都可以,但它是只能调用一次的

 

RxJava线程控制

标签:span   map   sub   线程   一行代码   android   主线程   serve   com   

原文地址:http://www.cnblogs.com/huyang011/p/7648755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!