Rxjava,Scheduler线程变换的例子

线程变换简介

1.让代码可以在不同的线程执行
2.subsribeOn——订阅时的线程
3.observeOn——接收时的线程
4.Scheduler——实际做线程变换

导入依赖

    def retrofit_version = "2.1.0"
    def rxjava_version = "2.0.1"

    //RxJava的依赖包
    implementation 'io.reactivex.rxjava2:rxjava:' + rxjava_version
    //RxAndroid的依赖包
    implementation 'io.reactivex.rxjava2:rxandroid:' + rxjava_version

    //RxBinding
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'

例子

Observable
                .create(new ObservableOnSubscribe<String>() {
                    @Override
                    public void subscribe(ObservableEmitter<String> e) throws Exception {
                        Log.d(TAG, "subscribe: "+Thread.currentThread());
                        e.onNext("1");
                        e.onNext("2");
                        e.onNext("3");
                    }
                })
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {
                        Log.d(TAG, "accept: "+Thread.currentThread());
                        Log.d(TAG, "accept: "+s);
                    }
                });

输出

2018-12-04 21:57:58.936 26114-26142/? D/MainActivity: subscribe: Thread[RxNewThreadScheduler-1,5,main]
2018-12-04 21:57:58.959 26114-26114/? D/MainActivity: accept: Thread[main,5,main]
2018-12-04 21:57:58.959 26114-26114/? D/MainActivity: accept: 1
2018-12-04 21:57:58.959 26114-26114/? D/MainActivity: accept: Thread[main,5,main]
2018-12-04 21:57:58.959 26114-26114/? D/MainActivity: accept: 2
2018-12-04 21:57:58.959 26114-26114/? D/MainActivity: accept: Thread[main,5,main]
2018-12-04 21:57:58.959 26114-26114/? D/MainActivity: accept: 3

猜你喜欢

转载自blog.csdn.net/yu540135101/article/details/84799660