RxJava分析之订阅过程

本文深入探讨RxJava的订阅过程,解析Observable、Subscriber、OnSubscribe和Subscription之间的关系。通过源码分析,阐述unsubscribe操作如何影响Observable和Worker,并揭示Observable并非工作线程的提供者,而是依赖于OnSubscribe。最后,通过一张图解展示了订阅过程的逻辑,帮助理解Observer.subscribe(Subscriber)设计的合理性。
摘要由CSDN通过智能技术生成

最近在用RxJava,虽然正常使用没有问题,但过程中产生了很多疑问,比如Observable和Subscriber是怎么联系到一起的?OnSubscribe又是什么时候起作用的,起什么作用?Subscriber和Subscription有什么关系?unsubscribe之后Observable还在运行吗?等等这些疑问,所以顺着这些问题找找答案,梳理一下源码,给自己以后做个记录就不会忘记啦~若有不当欢迎指正,一起进步~

根据我的理解说一下以上几个概念
  • Observable - 可被观察者(就是一个可观测的数据源)
  • Subscriber - 订阅者(接收可观测数据源并可以进行处理的观察者)
  • OnSubscribe - 订阅时(订阅者订阅可被观察者时发生的一系列动作)
  • Subscription - 订阅(名词性质,包含了订阅状态和解除订阅的动作)
  • Observe - 观测 (对订阅者的处理流程的规范包含三个动作(onError onNext onComplete))
  • SubscriptionList(维护一个订阅列表)
有了上边的基本了解再来看看源码分析

通常在Android上一个简单的订阅是这样的

/*其中onSubscribeTimerPeriodically是Observable.OnSubscribe类型,就是一个订阅时,这个订阅时做了那些事?简单一点就做一件事,创建一个Subscription类型的工作线程,拿到订阅者并把工作线程添加进订阅者内部维护的SubscriptionList中去,然后异步向订阅者发送数据(后边详细分析)*/
Observable.create(onSubscribeTimerPeriodically)
.subscribe(mySubscriber)
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread());

mySubscriber = new Subscriber<Long>() {
            @Override
            public void onCompleted() {

            }

       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值