package com.example.rx;
import rx.Observable;
import rx.Observer;
import rx.Subscriber;
import rx.functions.Action0;
import rx.functions.Action1;
/**
* Created by alanchen on 15/9/11.
*/
public class RxBase {
static Observable<String> mStringObservable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("Hello Rxjava");
//Notice 如果onCompleted 先调用了,那么后面的onNext onError则会被无视掉,但是不是等同于return,后面其他的代码还是会执行
subscriber.onCompleted();
// System.out.println("看看onCompleted调用了还会不会有输出");
subscriber.onError(new Throwable("hehehe"));
}
});
static Subscriber<String> mStringSubscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError:" + e.getMessage());
}
@Override
public void onNext(String s) {
System.out.println(s);
}
};
/**
* Observable.just就是用来创建只发出一个事件就结束的Observable对象
* 它在call里自动调用了 onNext 和 onCompleted
*/
static Observable<String> simpleObservable = Observable.just("Hell,simple observable");
/**
* 如果不关心OnComplete和OnError,我们只需要在onNext的时候做一些处理,这时候就可以使用Action1类。
*/
static Action1<String> onNextAction = new Action1<String>() {
@Override
public void call(String s) {
System.out.println("Action1<String> onNextAction:" + s);
}
};
static Action1<Throwable> onErrorAction = new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
System.out.println("Action1<Throwable> onErrorAction:");
}
};
static Action0 onCompleteAction = new Action0() {
@Override
public void call() {
System.out.println("Action0 onCompleteAction:");
}
};
public static void main(String[] args) {
mStringObservable.subscribe(mStringSubscriber);//执行后 输出 Hello Rxjava onCompleted
//
// simpleObservable.subscribe(mStringSubscriber);//执行后 输出 Hell,simple observable onCompleted
//
// //Notice 如果调用onError 这个单个的onNextAction 会报错
mStringObservable.subscribe(onNextAction);
mStringObservable.subscribe(onNextAction, onErrorAction);
mStringObservable.subscribe(onNextAction, onErrorAction, onCompleteAction);
//
//
Observer observer = new Observer() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
};
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
@Override
public void onStart() {
super.onStart();
}
};
}
}