亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第10天 開源框架 RxJava 源碼解讀

標簽:
Android

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

RxJava 是一种基于观察者模式的响应式编程框架,其中的主要角色包括 Observable(被观察者)、Observer(观察者)以及通过Subscribe(订阅)连接观察者和被观察者。

1.Observable(被观察者)

Observable 负责事件的生产。事件从创建到加工处理,再到被订阅者接收,就是一个个 Observable 形成的事件流。RxJava 的链式调用,每一步方法的调用,都会返回一个新的 Observable 给下一步。同样是链式调用,它与我们常见的 Builder 模式不太一样,每个操作符,每次线程切换,每步都会新建一个 Observable,而非直接加工上一步的Observable 返回给下一步。

2.Observer(观察者)

Observer 是事件的消费者,它会订阅 Observable 创建的事件,根据业务需要,加工成最终的结果。使用时需要重写它的 onNext(),onCompleted(),onError() 和 onSubscribe() 方法。

3.ObservableOnSubscribe 的 subscribe() 订阅

创建 ObservableOnSubscribe 对象时,需要重写其 subscribe() 方法。这里要注意与 Observable 的subscribe() 方法的区别。在调用链中有时会用到各种操作符进行一些变换,事实上每个操作符都会重写这么一个subscribe()方法。将准备好被订阅的数据,通过调用 subscribe() 参数中 ObservableEmitter 的 onNext(),onCompleted() 或 onError() 通知给观察者。

4.RxJava 的缓存机制

RxJava 的内存、磁盘、网络三级缓存机制。

  • 设置第一个 Observable,用于检查内存缓存是否有对数据的缓存,如果有数据则直接发送,如果没有直接发送结束事件。
  • 设置第二个 Observable,检查磁盘缓存是否有对数据的缓存,如果有数据则直接发送,如果没有则直接发送结束事件。
  • 设置第三个 Observable,通过网络获取数据。

RxJava 通过 concat() 和 firstElement() 操作符实现缓存功能,具体的实现过程是:

  1. 通过 concat() 合并 memory、disk、network 3个被观察者的事件(即检查内存缓存、磁盘缓存、发送网络请求),并将它们按顺序串联成队列。
  2. 通过 firstElement(),从串联队列中取出并发送第1个有效事件(Next事件),即依次判断检查 memory、disk、network。
  3. 将最终的数据传递给订阅的观察者。

课程收获

有别于其它的讲解 RxJava 的视频课程,这一章没有一上来就讲解 RxJava 丰富的操作符,而是从全局的角度概括性的讲解了 RxJava 的组成,并重点讲解了 RxJava 三级缓存的实现机制,对于实际开发中设计缓存框架,能够提供一些指导。

图片描述
图片描述

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
12
獲贊與收藏
17

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消