最近同事离职,接了个锅,里面的代码都是RxJava的味道,逼的自己不得不学习一波。看了网上的很多入门篇的博客,写的很不错。链接奉上:

【Android】RxJava的使用(三)转换——map、flatMap

给android开发者的RxJava详解

在RxJava的世界中,我先认识了3个主要的类:

Observable

Obsever

Subscriber

其中,Observable扮演着类似“生产者”的角色,它是信息的产生源。Obsever和Subscriber的功能类似,扮演者类似”消费者“的角色,它是信息的监听者。这就类似于

观察者模式。

那什么是观察者模式呢?

我最喜欢她的一个别名源—监听模式,很好的概括了观察者模式的特点。

先来看一张简略的类图:

从图中发现,其实源Observable与监听者Obsever是聚合的关系,即Observable维护者一组监听者Obsever,但监听者Observer可以独立于Observable存在,如果用

代码表示被观察者(源)的写法:

public class Observable {
    private ArrayList<Obsever> obsevers = new ArrayList<>();

    public void attachToObservable(Obsever observer) {
        observers.add(observer);
    }    
public void notifyAll(List<Obsever> observers) { for(Obsever observer : observers) { observer.call(); } } }

在RxJava中呢,Observable和Obsever非常类似上面观察者的关系,观察者Obsever通过一个函数subscribe()与Observable发生关系。

具体使用方法可以看看本文开头给的链接。

再者,RxJava还有几个常见的函数,Map()和flatMap(),我浅显地理解为将一种数据格式通过Map()和flatMap()转换为另一种数据格式,可以看成是一种映射。

至于RxJava的多线程处理,暂时没有什么特别的见解,这次就不分享了。

Rxjava学习小记的更多相关文章

  1. mongodb入门学习小记

    Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...

  2. javascript学习小记(一)

    大四了,课少了许多,突然之间就不知道学什么啦.整天在宿舍混着日子,很想学习就是感觉没有一点头绪,昨天看了电影激战.这种纠结的情绪让我都有点喘不上气啦!一点要找点事情干了,所以决定找个东西开始学习.那就 ...

  3. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  4. js 正则学习小记之左最长规则

    原文:js 正则学习小记之左最长规则 昨天我在判断正则引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的结果是 'nfa'.其实我们的本意是想得到整 ...

  5. js 正则学习小记之NFA引擎

    原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣.  求抱大腿,求大神调教. 之前大致有个印象,正 ...

  6. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  7. CSS学习小记

    搜狗主页页面CSS学习小记 1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...

  8. Gcd&Exgcd算法学习小记

    Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...

  9. logstash 学习小记

    logstash 学习小记 标签(空格分隔): 日志收集 Introduce Logstash is a tool for managing events and logs. You can use ...

随机推荐

  1. Adobe 系列软件通用破解方式(animate cc,Photoshop cc,Flash cc)等

    破解之前准备工作: ①:安装好 试用版的 Adobe软件 ②:下载好破解软件: amtemu.v0.9.2-painter,下载地址:链接:http://pan.baidu.com/s/1nvNR74 ...

  2. git初学笔记1

    之前对于软件的版本管理全靠粘贴辅助,觉得很low,而且也不是很方便.听前辈说git很好用,然后就学了一下. 今天主要学了些基本的操作命令,总结如下: 1. git最基本的操作  2. commit提交 ...

  3. “this kernel requires an x86-64 CPU, but only detects an i686 CPU, unable to boot” 问题解决

    1. 问题描述:  在Virtual Box上安装 Ubuntu 系统时出现错误(如题),VIrtual Box 上也没有64位操作系统的选项 2.原因分析: (1) 可能 BIOS 的 Virtua ...

  4. Hibernate基础学习(二)—Hibernate相关API介绍

    一.Hibernate的核心接口      所有的Hibernate应用中都会访问Hibernate的5个核心接口.      (1)Configuration接口: 配置Hibernate,启动Hi ...

  5. ecshop3.6商品如何按照销量排序

    ecshop订单状态对应值:order_status有5中状态,并且当客户确认收货后,order_status的数值不一定是1也有可能是5.order_status = 0表示订单未确认order_s ...

  6. 将 JSP 中数组传递给 js

    <%       String[]  name   =   { "w ", "a ", "n ", "g"}; % ...

  7. tab栏切换,内容为不断实时刷新数据的vue实现方法

    先说一下产品需求,就是有几个tab栏,每个tab栏对应的ajax请求不一样,内容区域一样,内容为实时刷新数据,每3s需要重新请求,返回的数据在内容区域展示,每点击一次tab栏需停止其他tab栏ajax ...

  8. ios 检测屏幕方向

    方法一:通知中心监听 name: // UIDeviceOrientationDidChangeNotification   允许方向改变的情况下,监听设备方向,与电池条无关 // UIApplica ...

  9. STM32学习笔记(三)——外部中断的使用

    开发板芯片:STM32F407ZGT6 硬件连接:PE3-KEY1 一.STM32F4的中断介绍 STM32F4的每个IO都可以作为外部中断输入,很强大的功能吧!以前学习的51只有两个外部中断. ST ...

  10. 使用纯CSS方案,解决垂直居中

    CSS是HTML元素的剪刀手,它极度的丰富了web页面的修饰.在众多CSS常见的样式需求中,有一奇葩式的存在[垂直居中],因为不管是从逻辑实现方面还是从正常需求量来讲,这都没理由让这个需求在实践过程中 ...