ravajava1.0的转换思路1(事件转换)

RxJava中最常用到的两个类Subscriber的抽象(即订阅者)和Observable(被订阅对象),而转换过程主要用到两个接口类Func1和Action,本文通过这4个类来解释rxjava的转换工作机制。

可以参照下图片:

总结:我们把Onsubscribe当成事件发射器,T为原始事件,Observable为被订阅者,Subscriber为订阅者,订阅者的onNext方法为处理事件能力;当我们用订阅者R去订阅被订阅者T时,就需要转换被订阅者(即T转成R,其实就是新建一个被订阅者R);转换被订阅者内部过程主要分工给Func1转换器1, Func1,Subscriber>转换器2。

我们的目标订阅者为Subscriber,当订阅者R订阅事件时,会通知被订阅者(一个新建的被订阅者Observable)来发出事件,而被订阅者R本身没持有事件,因而通知他的上级Observable来发出初始事件,事件T是由初始被订阅者Observable的OnSubscribe发射,T被发射出来后,需要有一个订阅者Subscriber来处理,这时候转换器2把目标订阅者Subscriber转成转成订阅者Subscriber,并且把订阅者的处理事件能力给到订阅者,而订阅者在拿到事件T后,他的处理方式就交由刚刚获得的订阅者的能力来处理,因而需要转换器1来把事件T转成事件R(因为订阅者只能处理R事件),再交给订阅者处理。

总流程:最下级订阅者首先通知最下级被订阅者发出事件,然后被订阅者依次通知上级发出事件,直到原始被订阅者发出事件,然后事件从被订阅者依次向下传递,并且由相应的订阅者依次委托下级订阅者处理,直到最下级订阅者处理事件,而中间由转换器对事件和订阅者进行相应转换。

你可能感兴趣的:(ravajava1.0的转换思路1(事件转换))