原文链接:
《关于RxJava最友好的文章》
《关于RxJava最友好的文章————进阶》
//创建一个被观察者(开关)
Observable switcherate(new Observable.OnSubscribe<String>(){@Overridepublic void call(Subscriber<? super String> subscriber) {Next("On");Next("Off");Next("On");Next("On");Completed();}});
//创建一个观察者(台灯)
Subscriber light=new Subscriber<String>() {@Overridepublic void onCompleted() {//被观察者的onCompleted()事件会走到这里;Log.d("DDDDDD","结束观察...n");}@Overridepublic void onError(Throwable e) {//出现错误会调用这个方法}@Overridepublic void onNext(String s) {//处理传过来的onNext事件Log.d("DDDDD","handle this---"+s)}
//订阅
switcher.subscribe(light);
“ate(new Observable.OnSubscribe<String>()” 中的 OnSubscribe 是链接“台灯”和“开关”的关键
onSubscribe的工作就是调用call(subscriber)来通知被观察者发送消息给这个subscriber。
以上的结论对于下面我们理解操作符的原理十分有帮助,因此一定要看明白。
按 map 操作符举例
public final <R> Observable<R> map(Func1<? super T, ? extends R> func){ //创建了全新代理的的Observable,构造函数传入的参数是OnSubscribe //OnSubscribeMap显然是OnSubscribe的一个实现类, //也就是说,OnSubscribeMap需要实现call()方法 //构造函数传入了真实的Observable对象 //和一个开发者自己实现的Func1的实例 return create(new OnSubscribeMap<T, R>(this, func)); }
本文发布于:2024-01-29 08:01:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170648651313849.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |