一个简单的例子,就是简单
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
L.D("rxjava..实践 1", "线程" + Thread.currentThread().getName());
//可在这里做异步操作(记得放io线程中)
Thread.sleep(1000);
//发送数据,会沿着数据流向下,直至subscribe("这里的对象消耗结束")
emitter.onNext("我是第一个发出的数据");
}
})
//数据流向下 使用observeOn切换线程至io
.observeOn(Schedulers.io())
//变换操作符 在io线程中,将<T(输入),K(输出)>
.map(new Function<String, String>() {
@Override
public String apply(String s) throws Exception {
L.D("rxjava..实践 2", "线程" + Thread.currentThread().getName());
//return的结果即处理后结果,输出到下一个数据流
return "我是处理后的数据";
}
})
//订阅线程切换
.subscribeOn(Schedulers.io())
//数据流向下 使用observeOn切换线程至main,可进行ui操作
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
//accept接收到数据流最终结果,有多种接收方式(onNext..)
L.D("rxjava..实践 3", "线程" + Thread.currentThread().getName() + "..最终数据" + s);
}
});
输出log
加了sleep会先输出
实践1..
1秒后
实践2..
实践3..
自己写不好,也要学会收集大佬们的笔记