RXJAVA之Subject
RxJava中常见的Subject有4种,分别是 AsyncSubject、 BehaviorSubject、PublishSubject、 ReplaySubject。
AsyncSubject
使用AsyncSubject无论输入多少参数,永远只输出最后一个参数。
BehaviorSubject
BehaviorSubject会发送离订阅最近的上一个值,没有上一个值的时候会发送默认值。
BehaviorSubject<Integer> subject = BehaviorSubject.create();
subject.onNext(1);
subject.onNext(2);
subject.onNext(3);
subject.onNext(4);
subject.subscribe(new Consumer<Integer>(){
@Override
public void accept(Integer t) throws Exception {
System.out.println(t); }});
PublishSubject
使用PublishSubject从那里订阅就从那里开始发送数据。
PublishSubject<Integer> subject = PublishSubject.create();
subject.onNext(1);
subject.subscribe(new Consumer<Integer>(){
@Override
public void accept(Integer t) throws Exception {
System.out.println(t); }});
subject.onNext(2);
subject.onNext(3);
subject.onNext(4);
输出结果2 3 4.
ReplaySubject
无论何时订阅,都会将所有历史订阅内容全部发出。
ReplaySubject<Integer> subject = ReplaySubject.create();
subject.onNext(1);
subject.subscribe(new Consumer<Integer>(){
@Override
public void accept(Integer t) throws Exception {
System.out.println(t); }});
subject.onNext(2);
subject.onNext(3);
subject.onNext(4);
输出结果1 2 3 4.
RXJAVA之Subject的更多相关文章
- Rxjava Subjects
上次提到调用observable的publish和connect方法后可以将一个Observable发出的对象实时传递到订阅在上的subscriber. 这个和Rxjava中Subject的概念十分相 ...
- 《Android进阶之光》--RxJava
No1: RxJava使用 dependencies{ compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2. ...
- Android RxJava+Retrofit完美封装
作者简介 本篇来自 小河马 的投稿,分享了自己是如何进行 RxJava+Retrofit 的封装.本文的技术点自然没话说,另外对于这种模块化的思路,希望能帮助到大家.最后提前祝大家周末愉快以及圣诞快乐 ...
- ReactiveX 学习笔记(13)基础类型
Key Types and Life Management 本文主题是 Rx 中的基础类型 Subject 类及其生命周期的管理. 公共代码 RxNET private static void Wri ...
- ReactiveX 学习笔记(12)调度器
Schedulers, threading and testing 本文的主题为调度器,多线程以及测试. RxJava操作符(六)Utility SubscribeOn / ObserveOn Sub ...
- RxJava Subject
Subject Subject可以看成是一个桥梁或者代理,在某些ReactiveX实现中(如RxJava),它同时充当了Observer和Observable的角色.因为它是一个Observer,它可 ...
- Android消息传递之基于RxJava实现一个EventBus - RxBus
前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...
- RxJava简单的介绍
1. RxJava简介 Rx(ReactiveX,响应式编程)是一种事件驱动的基于异步数据流的编程模式,整个数据流就像一条河流,它可以被观测(监听),过滤,操控或者与其他数据流合并为一条新的数据流.而 ...
- [RxJava^Android]项目经验分享 --- RxLifecycle功能实现分析(一)
最近在研究RxJava自定义操作符的实现原理,发现成型的项目案例较少.突然想起在项目中应用的RxLifecycle是使用自定义操作符,便拿来研究了一下.分析之前,跟大家了解一些相关操作符和RxLi ...
随机推荐
- leetcode刷题记录——栈和队列
题目 232.用栈实现队列 class MyQueue { private Stack<Integer> in = new Stack<>(); private Stack&l ...
- failed to find romfile "vgabios-stdvga.bin"
问题:failed to find romfile "vgabios-stdvga.bin" 解决: apt-get install vgabios ln -s /usr/shar ...
- webstorm激活码2020--定期更新
2020年8月22日更新 一般错误关闭软件重填即可,key is invalid 错误需要恢复破解或者重装,才能使用 V8AF5QDT5R-eyJsaWNlbnNlSWQiOiJWOEFGNVFEVD ...
- 程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单?| 每一张图都力求精美
悟空 种树比较好的时间是十年前,其次是现在. 自主开发了Java学习平台.PMP刷题小程序.目前主修Java.多线程.SpringBoot.SpringCloud.k8s. 本公众号不限于分享技术,也 ...
- JDK、JRE与JVM之间的关系
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧: JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Env ...
- vim编辑器 与etc目录
第1章 目录结构 1.1 vim vim故障 vim 是vi的升级版本 vi类似于文本文档 vim类似于notepad++ 编辑 必须先安装vim命令 yum -y insta ...
- MySQL锁这块石头似乎没有我想的那么重
前言 前言为本人写这篇文章的牢骚,建议跳过不看. 之前好几次都想好好的学习MySQL中的锁,但是找了几篇文章,看了一些锁的类型有那么多种,一时间也没看懂是什么意思,于是跟自己说先放松下自己,便从书 ...
- iOS NSNotification通知
通知中心(NSNotificationCenter) 通知(NSNotification) 一个完整的通知一般包含3个属性:(注意顺序) - (NSString *)name; 通知的名称 - (i ...
- C#转PHP
官方主页 https://github.com/isukces/cs2php 快速开始 http://www.cs2php.com/how-to-begin.htm#.W2rBhC2B3mI 如何在V ...
- 关于前端Ajaxc传FormData后台如何接收转base64
前端是Jquery的ajax,后台是C#MVC,代码如下: <------前端-----> var formData = new FormData(); formData.append(& ...