RxJava学习

人生如果错了方向,停止就是进步。

RxJava Github基本用法都可以查考文档。

一.基本用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Observable<String> myObservaable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> t) {
t.onNext("Hello");
t.onCompleted();
}
});
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String t) {
System.out.println("onNext " + t);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onCompleted() {
}
};
myObservaable.subscribe(mySubscriber);

二.简洁写法:

1
2
3
4
5
6
7
8
Observable<String> mObservable = Observable.just("Hello");
Action1<String> onNextAction = new Action1<String>() {
@Override
public void call(String t) {
System.out.println(t);
}
};
mObservable.subscribe(onNextAction);

三.map,fliter和flatMap:

1
2
3
4
5
6
7
8
9
10
11
12
Observable.just("Hello")
.map(new Func1<String, String>() {
@Override
public String call(String t) {
return t + " map";
}
}).subscribe(new Action1<String>() {
@Override
public void call(String t) {
System.out.println(t);
}
});

打印结果是Hello map;

1
2
3
4
5
6
7
8
9
10
11
12
13
Integer[] data = {1, 2, 3, 4};
Observable.from(data)
.filter(new Func1<Integer, Boolean>() {
@Override
public Boolean call(Integer t) {
return t > 2 ? true : false;
}
}).subscribe(new Action1<Integer>() {
@Override
public void call(Integer t) {
System.out.println(t);
}
});

打印结果是3,4;

flatMap参考这里(详细介绍了所有用法,值得一看),

四.线程间的切换: