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 + "]" ;
}
}
}

最新文章

  1. SQL Server 2016 RC0 安装(超多图)
  2. flask SQLAlchemy中一对多的关系实现
  3. UART Explained(转载)
  4. dump_stack调用过程【原创】
  5. jsp_属性范围_session
  6. linux 客户端 Socket 非阻塞connect编程
  7. [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )
  8. python 序列化之JSON和pickle详解
  9. Android之天气APP
  10. Spring MVC中如何指定某个类或方法自适配地响应某个HTTP请求?
  11. Yii CGridView 基本使用(三)关联表相关字段搜索
  12. Netty4.0学习笔记系列之一:Server与Client的通讯
  13. ubuntu 中 ThinkPHP 上传文件无法得到文件名
  14. HBase概念学习(七)HBase与Mapreduce集成
  15. PHP中字符串转换为数值 可能会遇到的坑
  16. PHP处理密码的几种方式【转载】
  17. Java第一章----Java概述+环境搭建
  18. 用Zmq实现网关与游戏服全互连
  19. F#周报2019年第14期
  20. leetcode python 005

热门文章

  1. 关于对STL容器重载运算符的问题
  2. [LeetCode] 296. Best Meeting Point 最佳开会地点
  3. 第01组 Beta冲刺(2/5)
  4. oracle--报错 ORA-01003,ORA-09817,ORA-01075
  5. 关于DTO的定义问题。以及C#语言扩展的思考。
  6. CentOS7 GitLab 安装
  7. 本周学习总结(原生+Echarts地图)
  8. Excel技能提升
  9. 【模板整合计划】NB数论
  10. WPF 高级篇 MVVM 附加属性