准备工作 //www.greatytc.com/p/1ac62d93b962
Observer的创建
static Observer<Integer> observer = new Observer<Integer>() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(Integer integer) {
System.out.println(integer);
}};
Observable的创建
Observable.create(), Observable.just(),Observable.from();
create方法需要一个Observable.OnSubscribe对象
just方法是将一个(或多个,最多9个)普通对象转换成一个Observable对象
from方法是将一个列表转换成一个Observable对象
用代码说话吧
create:
static Observable.OnSubscribe<Integer> onsubscribe = new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> subscriber) {
subscriber.onNext(1);
subscriber.onError(new Exception());
subscriber.onCompleted();
subscriber.onError(new Exception());
subscriber.onNext(2);
}};
- onCompleted和onError方法不会同时被调用,两者都会结束链式调用
-
onCompleted或onError方法之后的方法将不会被调用
测试:
static void create(){
Observable.create(onSubscribe).subscribe(integerObserver);
}
public static void main(String args[]) {
create();
}
just:
just方法最多可以接受10个参数
static void just(){
Observable.just(1).subscribe(integerObserver);
}
static void just2(){
Observable.just(1,2).subscribe(integerObserver);
}
- 如果是不同的类型just就会自动向上转型,转型失败将不能通过编译
from:
from是将一集合(from还有其它的创建方法,这里我只练习集合)转化成一个Observable
static void from(){
Integer arr[] = {1,2,3,4 };
Observable.from(arr).subscribe(integerObserver);
}
static void from2(){
Integer arr[] = {1,2,3,4 };
Observable.from(Arrays.asList(arr)).subscribe(integerObserver);
}