一、基本案例实现
public void click(View v){
// 想象工厂中的流水线
// 创建 Observable 被观察者 / 可观察对象
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
int result = 10 / 5;
// onNext 可以调用多次
subscriber.onNext(result + “”);
subscriber.onNext(“itcast”);
// 事件序列结束标记
subscriber.onCompleted();
// 事件错误的标记
//subscriber.onError();
}
}).subscribe(new Observer<String>() {
// 订阅事件 指定观察者, 被观察者必须指定了观察者, 整个事件流程才可以被启动
@Override
public void onNext(String s) {
System.out.println(“onNext: ” + s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onCompleted() {
System.out.println(“onCompleted”);
}
});
}
二、被观察者的变形
public void click1(View v){
Observable.just(1, 2)
.subscribe(new Observer<Integer>() { // 观察者
@Override
public void onCompleted() {
System.out.println(“onCompleted”);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
System.out.println(“onNext: ” + integer);
}
});
}
三、变换案例1
public void click2(View v) {
String[] array = {“url1”, “url2”};
// 订阅者
subscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
System.out.println(“onCompleted”);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
System.out.println(“onNext: ” + s);
}
};
Observable.from(array)
.subscribe(subscriber);
}
三、变换案例2
public void click3(View v) {
String[] array = {“url1”, “url2”, “url3”};
Observable.from(array)
.subscribe(new Action1<String>() { // onNext闭包
@Override
public void call(String s) {
System.out.println(“next call: ” + s);
}
});
}
三、变换案例3
public void click4(View v) {
String[] array = {“url1”, “url2”, “url3”};
Observable.from(array)
.subscribe(new Action1<String>() { // onNext闭包
@Override
public void call(String s) {
System.out.println(“next call: ” + s);
}
}, new Action1<Throwable>() { // onError
@Override
public void call(Throwable throwable) {
}
}, new Action0() {
@Override
public void call() { // Complete
System.out.println(“complete: “);
}
});
}