Rxjava学习笔记
1、使用Observable.range(int start, int count)创建一个发射特定整数序列的Observable,第一个参数为起始值,第二个为发送的个数,如果为0则不发送,负数则抛异常。
import rx.Observable;
import rx.Subscriber; public class MyDemo { public static void main(String[] args) {
//创建发射源(被观察者)
Observable<Integer> observable = Observable.range(, );
//创建接收源(观察者)
Subscriber<Object> subscriber = new Subscriber<Object>() {
@Override
public void onStart() {
System.out.println("Subscriber onStart: ");
} @Override
public void onCompleted() {
System.out.println("Subscriber onCompleted: ");
} @Override
public void onError(Throwable e) {
System.out.println("Subscriber onError: " + e.toString());
} @Override
public void onNext(Object t) {
System.out.println("Subscriber onNext: " + t);
}
};
//订阅
observable.subscribe(subscriber);
}
}
2、Subscriber的简化
RxJava提供了Action0等一系列的类似的类,当我们不需要(或者不关心)Subscriber的全部方法(如只关心onNext方法),就可以使用Action类来替代Subscriber。
2.1、当我们并不关心OnComplete和OnError,可以使用 subscribe(onNextAction),我们只需要在onNext的时候做一些处理,这时候就可以使用Action1类:
import rx.Observable;
import rx.functions.Action1; public class MyDemo { public static void main(String[] args) {
Person person = new Person(, "js");
//创建发射源(被观察者)
Observable<Person> observable = Observable.just(person);
//订阅,创建接收源(观察者)
observable.subscribe(new Action1<Person>() { @Override
public void call(Person t) {
System.out.println("Action1 call:" + t.toString());
}
});
}
private static class Person{
private int age;
private String name; public Person(int age, String name) {
this.age = age;
this.name = name;
} public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Person[age=" + age + ",name=" + name + "]" ;
}
}
}
2.2、subscribe方法还有两个重载方法,分别是:
- 两个参数: subscribe(onNextAction , onErrorAction)
- 三个参数: subscribe(onNextAction , onErrorAction ,onCompletedAction)
import rx.Observable;
import rx.functions.Action0;
import rx.functions.Action1; public class MyDemo { public static void main(String[] args) {
Person person = new Person(, "js");
//创建发射源(被观察者)
Observable<Person> observable = Observable.just(person);
//订阅,创建接收源(观察者)
Action1<Person> onNextAction = new Action1<Person>() {
@Override
public void call(Person t) {
System.out.println("Action1 call:" + t.toString());
}
};
Action1<Throwable> onErrorAction = new Action1<Throwable>() {
@Override
public void call(Throwable t) {
System.out.println("Action1 call:" + t.toString());
}
};
Action0 onCompletedAction = new Action0() {
@Override
public void call() {
System.out.println("Action0 call");
}
};
observable.subscribe(onNextAction, onErrorAction);
observable.subscribe(onNextAction, onErrorAction, onCompletedAction);
}
private static class Person{
private int age;
private String name; public Person(int age, String name) {
this.age = age;
this.name = name;
} public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Person[age=" + age + ",name=" + name + "]" ;
}
}
}
Rxjava学习笔记的更多相关文章
- RxJava学习笔记(操作符)
前言 上一篇文章介绍了RxJava的基础知识和简单实现,篇幅已经比较多了,所以把操作符(Operators)相关的内容放在这一篇.有了上一篇文章的基础,相信会比较容易理解操作符相关的内容了. 操作符( ...
- RxJava 学习笔记(一)
最近Android6.0的权限问题,要把之前的APP进行改造,用到了RxPermission框架!之前了解过RXJAVA,但是由于之前项目一直没有使用这个框架,所以也就一直搁置了.正好Rxpermis ...
- RxJava学习笔记(组合Observables)(转)
组合Observable 当我们需要处理多个Observable的时候,我们可以通过Rxjava的组合函数来创建我们自己想要的Observable. Merge RxJava的 merge() 方法将 ...
- ReactiveX 学习笔记(0)学习资源
ReactiveX 学习笔记 ReactiveX 学习笔记(1) ReactiveX 学习笔记(2)创建数据流 ReactiveX 学习笔记(3)转换数据流 ReactiveX 学习笔记(4)过滤数据 ...
- RxJava2.0学习笔记2 2018年7月3日 周二
摘记: 1.map -- 转换 有些服务端的接口设计,会在返回的数据外层包裹一些额外信息,这些信息对于调试很有用,但本地显示是用不到的.使用 map() 可以把外层的格式剥掉,只留下本地会用到的核心 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- [LeetCode] 743. Network Delay Time 网络延迟时间
There are N network nodes, labelled 1 to N. Given times, a list of travel times as directededges tim ...
- 软件推荐【Windows】
随时更新...链接为官网,自用保证安全(不信任可以把鼠标放在超链接上预览一下) 如有备注,下载链接均为最新(因为都是官方自动更新的下载链) 首先: 推荐一个软件管家(毕竟有时外网不稳定, ...
- 关于Adobe Premiere Pro视音频不同步的解决方法
在Potplayer和系统播放器都正常 但Pr里面就是音画不同步 原因是Pr识别错误,让音频比视频快了,这时要将视频后拉一点就ok了
- Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤
启用 Mod_rewrite 模块:sudo a2enmod rewrite 另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/a ...
- [数据结构 - 第8章] 查找之哈希表(C语言实现)
首先是需要定义一个哈希表的结构以及一些相关的常数.其中 HashTable 就是哈希表结构.结构当中的 elem 为一个动态数组. #define HASHSIZE 12 // 定义哈希表长为数组的长 ...
- LeetCode 485:连续最大1的个数 Max Consecutive Ones(python java)
公众号:爱写bug 给定一个二进制数组, 计算其中最大连续1的个数. Given a binary array, find the maximum number of consecutive 1s i ...
- 书籍推荐-An introduction to Data Science
为什么要读这本书? 该书是由我们老师推荐的,通过学习此数,可以了解R语言的使用,也可以知道基本的数据分析方法. 看到Creating a Data Set in R -- 24页面
- php 500报错解决方案
php 500报错解决方案 1 先看nginx error.log 指定的错误日记文件路径 找到这个日记文件看 里面信息 2 再看 php-fpm.conf 里面指定的PHP错误日记的路径 具体如下& ...
- Spring69道面试题
Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring ...
- UVA 10852 Less Prime 题解
Less Prime Let n be an integer, 100 n 10000, nd the prime number x, x n, so that n