1.什么是RxJava?

  简单,清晰的多线程编程框架.可方便的写出维护性高,逻辑清晰的Java程序.

2.什么是观察者模式?

  入门教程讲这种高大上抽象概念都是耍流氓!

3.开始

  3.1github地址

    https://github.com/ReactiveX/RxJava

    https://github.com/ReactiveX/RxAndroid

  3.2添加依赖:

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

    compile 'io.reactivex.rxjava2:rxjava:2.0.8'

    以上是rxjava的最新版本.

4.helloworld程序

public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Observable.create(new ObservableOnSubscribe<Integer>(){
@Override
public void subscribe(@NonNull ObservableEmitter<Integer> e) throws Exception {
int i = 0;
while(i < 5) {
e.onNext(i++);
Log.i(TAG, "subscribe: "+i);
}
e.onComplete();
// e.onError(new Throwable("onError"));
while(i < 10) {
e.onNext(i++);
Log.i(TAG, "subscribe: "+i);
} }
}).subscribe(new Observer<Integer>(){
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe: ");
} @Override
public void onNext(Integer integer) {
Log.i(TAG, "onNext: " + integer);
} @Override
public void onError(Throwable e) {
Log.i(TAG, "onError: ");
} @Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
}
}); }
}

log如下:

5.RxJava原理

  Observable相当于产生事件的上流红色水管,

  Observer是接受事件的下流绿色水管.

通过subscribe()方法,将两者关联起来,Observer(绿色水管)便可以接受Observable(红色水管)发送过来的事件,进行相应的逻辑处理.

5.1 源码分析

从log可分析出:

1.两个水管通过subscribe()建立连接后,onSubscribe()方法在第一个执行,执行完成后,才进行发送数据.

2.在执行完onComplete()(或者onError())后,上流水管继续发送事件,但下流水管不在接受事件.

5.2 说明

    5.2.1 subscribe()方法

该方法接受Observer参数,上面已经用过了.

其他参数,如Consumer<> onNext表示下流水管只关心onNext()事件,其他事件不去处理,多个参数同理.

6.入门结束.下篇文章继续

rxjava2学习笔记(1)的更多相关文章

  1. RxJava2学习笔记(3)

    接上回继续,今天来学习下zip(打包)操作 一.zip操作 @Test public void zipTest() { Observable.zip(Observable.create(emitter ...

  2. RxJava2学习笔记(2)

    上一篇已经熟悉了Observable的基本用法,但是如果仅仅只是“生产-消费”的模型,这就体现不出优势了,java有100种办法可以玩这个:) 一.更简单的多线程 正常情况下,生产者与消费者都在同一个 ...

  3. RxJava2.0学习笔记2 2018年7月3日 周二

    摘记: 1.map -- 转换  有些服务端的接口设计,会在返回的数据外层包裹一些额外信息,这些信息对于调试很有用,但本地显示是用不到的.使用 map() 可以把外层的格式剥掉,只留下本地会用到的核心 ...

  4. ReactiveX 学习笔记(0)学习资源

    ReactiveX 学习笔记 ReactiveX 学习笔记(1) ReactiveX 学习笔记(2)创建数据流 ReactiveX 学习笔记(3)转换数据流 ReactiveX 学习笔记(4)过滤数据 ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  7. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  8. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  9. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

随机推荐

  1. CQOI2015 解题报告

    CQOI2015终于全做完了~~~,讲一下题吧 首先这套题比起其他省选还是比较水的,就是5道题比较蛋疼 T1:[CQOI2015]选数 这道题还是比较神的. 首先给个比较神的题解:popoqqq大神的 ...

  2. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  3. java 计算源码的行数

    import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOExcepti ...

  4. TCP和UDP的"保护消息边界”

    转自:http://blog.csdn.net/zhangxinrun/article/details/6721427 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的.因此TCP ...

  5. eclipse不能写入classpath

    问题 更改工程的Build Path,出现如下问题:     Could not write file: G:\Java\myJavaPro\EJBEntityBean\.classpath. G:\ ...

  6. SQL Server 2008R2 企业版 百度云下载地址

    SQL Server 2008R2 (百度云下载地址:链接: http://pan.baidu.com/s/1mi34II8 密码: yc1w)   ASP.NET MVC4.0+ WebAPI+Ea ...

  7. 3212: Pku3468 A Simple Problem with Integers

    3212: Pku3468 A Simple Problem with Integers Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1053  So ...

  8. JDBC(下)

    1. 预编译sql处理(防止sql注入) -- 创建数据库 CREATE DATABASE jdbc_demo DEFAULT CHARACTER SET utf8;i -- 创建表 USE jdbc ...

  9. SQL SERVER 执行大于80M的SQL 脚本

    在CMD控制器窗口 使用SqlCmd命令来执行 具体请看 SqlCmd /? 或者MSDN

  10. 给IIS添加网站配置权限

    1.新建一个网站,填好名字,路径和主机名端口等等 2.为网站添加一个用户 3.用户隶属于Guests,和IIS_IUSRS 4.把网站的完全控制权限赋给刚才的用户. 在网站右键--编辑权限--安全 或 ...