线程变换简介
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