首页
学习
活动
专区
圈层
工具
发布

学着造轮子-RxLifeCycle

使用RxJava的一个很大的优势就是线程的灵活切换,特别是Android开发,工作线程请求,主线程监听,这已经是最普通的常规操作,但是Activity和Fragment都是有生命周期的,如何让我们的请求能在页面销毁时及时方便的撤销...尝试做抽象 我们的目标很明确,就是不需要Activity或者Fragment宿主持有Disposable对象去执行dispose方法,我们还是从RxJava的操作符中尝试找答案。...RxJava 提供了 4种 Subject AsyncSubject BehaviorSubject PublishSubject ReplaySubject 我们重点说BehaviorSubject,...compose 如果让我们的所有Observable都自己新建一个BehaviorSubject,然后去调用takeUtil,然后在activity或者Fragment的生命周期回调中调用 BehaviorSubject.onNext...对象,新建一个bind方法,供子类调用绑定生命周期,然后在OnDestory中调用BehaviorSubject的onNext方法 ?

85130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何开发一个简单好用的RxBus

    当然,最重要的因素是,通过RxJava开发一个RxBus也很方便。...如何支持粘性事件 RxJava天然的支持事件分发传递,比如,普通事件的传递,发送端我们可以直接使用PublishSubject,接收端则是普通的Observable即可,但是要支持粘性事件,我们需要考虑的东西就没这么简单了...BehaviorSubject:发射原始Observable最近发射的数据 ? PublishSubject:会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者 ?...BehaviorSubject它只会存储最近的一个事件,这样不会有内存隐患,但是这个特性本身也会存在隐患。比如,在发送事件A和接收事件A之间的某个时间点,如果又发送了事件B 那么,事件A就会被抛弃。...因此,BehaviorSubject也不是一个好的选择。 其实,以上四个Subject都不是最好的选择,最终还是决定自己缓存事件,并在合适的时机清除历。

    1.5K30

    如何学习RxJava3?有这个项目就够了!

    为了能够快速地熟悉和掌握RxJava3相关的内容, 我参照了官方文档并结合了之前使用的经验, 写了一个小的学习项目RxJava3Sample, 里面包含了文档简介、例子、日志展示和源码等内容。...有对RxJava3感兴趣的不妨把项目下下来, 本地跑一跑试一试, 效果绝对出乎你想象! 好了话不多说, 下面我来简单介绍一下这个项目....Subject Subject 既是 Observable 又是 Observer(Subscriber) 类型 描述 PublishSubject 只能接收到订阅之后的所有数据 BehaviorSubject...Rxjava的各类线程调度器Scheduler。 Rxjava全局未处理的错误。...特别感谢 RxDocs 中文文档 RxJava Wiki 最后 如果你觉得这个项目对你学习RxJava3有所帮助, 你可以点击star进行收藏或者将其分享出去, 让更多的人了解和掌握RxJava3!

    1K20

    Android 中 RxJava 的使用

    本文代码对应的是Rxjava2 真前言 总的来说Rxjava可以分为5块内容 分别为 发布者(Observable/Flowable/Single/Completable) 订阅者(Subscriber...RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的 onNext() 发出时,需要触发 onCompleted() 方法作为标志。...和Rxjava2对比 io.reactivex.subjects.AsyncSubject, io.reactivex.subjects.BehaviorSubject, io.reactivex.subjects.PublishSubject...io.reactivex.processors.UnicastProcessor 支持backpressure Subject 在平时开发时 用的不是很多 它分为四种 PublishSubject(之后) BehaviorSubject...- 区别 假如发布者 也就是报社 只发布周一到周五的报纸 一天一份 如果我们在周三早上来报厅订报 如果报厅是PublishSubject 我们可以收到 周三 周四 周五的报纸 如果报厅是BehaviorSubject

    2.5K30

    【RxJava】RxJava 简介 ( RxJava 概念 | RxJava 组成 - 被观察者 观察者 订阅 操作符 | RxJava 适用场景 )

    一、RxJava 简介 1、RxJava 概念 RxJava 框架 是一个 异步编程函数库 , 包含了如下要素 : 观察者模式 迭代器模式 函数式编程 RxJava 框架应用场景 : 异步操作 事件流...2、RxJava 组成 - 被观察者 / 观察者 / 订阅 / 操作符 RxJava 组成要素 : Observable(被观察者): Observable 是一个 可以发送消息的数据源 , 可以同时发送若干消息...可以进行消息的 过滤、变换、合并、组合等操作 ; 3、RxJava 适用场景 RxJava 通过 组合调用 / 链式调用 被观察者 / 观察者 / 订阅 / 操作符 要素 ; RxJava 可以简化...RxJava 还支持 线程切换 / 并发处理 / 错误处理 ,利于处理各种 并发 和 异步 操作。...RxJava 异步编程库,蕴含了 响应式编程 思想 ,提供了 简洁、灵活和可组合 的方式 来 处理 异步任务 和 事件流。

    1.1K30

    RxJava 详解

    有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么?...鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用过程中对 RxJava 有了一些理解,我决定写下这篇文章来对 RxJava 做一个相对详细的、针对 Android 开发者的介绍。...RxJava 提供了对事件序列进行变换的支持,这是它的核心功能之一,也是大多数人说『RxJava 真是太好用了』的最大原因。...不过 RxJava 的变换远不止这样,它不仅可以针对事件对象,还可以针对整个事件队列,这使得 RxJava 变得非常灵活。...因此,我写了这篇《给 Android 开发者的 RxJava 详解》,希望能给始终搞不明白什么是 RxJava 的人一些入门的指引,或者能让正在使用 RxJava 但仍然心存疑惑的人看到一些更深入的解析

    2.2K10

    Rxjava源码解析笔记 | Rxjava基本用法

    Rxjava四要素 被观察者 在Rxjava当中, 决定什么时候触发事件, 决定触发什么样的事件; 观察者 决定事件触发的时候将产生什么样的行为; 类似于传统观察者模式, 观察者会随着被观察者的状态变化而发生相应的操作...其中,其实Subscriber就是我们的观察者; 后面的Rxjava源码阅读中, 我们会发现Observer在源码中也会被转换成Subscriber来进行相应的处理, 所有才说其实Subscriber...第二步, 创建观察者Observer/Subscriber,即第二个要素, 1.在传统的观察者模式当中,观察者只有一个update()方法, 在其中根据被观察者的状态变化而做出反应/改变; 而在Rxjava...的一种简单的使用, 主要是理解一下Rxjava对传统观察者设计模式的拓展和改进; 实际情况当中,其实它还包括了很多操作符, 以及Rxjava最核心的线程控制调度, 这两部分是Rxjava的核心...package com.example.jiajiemu.a11.rxjava; import rx.Observable; import rx.Observer; import rx.Subscriber

    89520

    RxJava系列六(从微观角度解读RxJava源码)

    前言 通过前面五个篇幅的介绍,相信大家对RxJava的基本使用以及操作符应该有了一定的认识。但是知其然还要知其所以然;所以从这一章开始我们聊聊源码,分析RxJava的实现原理。...本文我们主要从三个方面来分析RxJava的实现: RxJava基本流程分析 操作符原理分析 线程调度原理分析 本章节基于RxJava1.1.9版本的源码 一、RxJava执行流程分析 在RxJava系列...super String> subscriber) { subscriber.onNext("Hello RxJava!")...(由于对RxJavaHooks的理解并不影响我们对RxJava执行流程的分析,因此在这里我们不做进一步的探讨。...总结 这一章以执行流程、操作符实现以及线程调度三个方面为切入点剖析了RxJava源码。下一章将站在更宏观的角度来分析整个RxJava的框架结构、设计思想等等。

    1.8K70

    RxJava系列一

    本章节中部分概念摘自《RxJava Essentials》一书 RxJava的来历 Rx是微软.Net的一个响应式扩展,Rx借助可观测的序列提供一种简单的方式来创建异步的,基于事件驱动的程序。...并于13年二月份正式向外展示了RxJava。 从语义的角度来看,RxJava就是.NET Rx。从语法的角度来看,Netflix考虑到了对应每个Rx方法,保留了Java代码规范和基本的模式。...什么是RxJava 那么到底什么是RxJava呢?我对它的定义是:RxJava本质上是一个异步操作库,是一个能让你用极其简洁的逻辑去处理繁琐复杂任务的异步事件库。...RxJava好在哪 Android平台上为已经开发者提供了AsyncTask,Handler等用来做异步操作的类库,那我们为什么还要选择RxJava呢?答案是简洁!...(此例子思路来源于扔物线的给Android开发者的RxJava详解一文) 使用RxJava的写法是这样的: 从上面这段代码我们可以看到:虽然代码量看起来变复杂了,但是RxJava的实现是一条链式调用,没有任何的嵌套

    1.1K100
    领券