转载链接http://blog.csdn.net/android_hdh/article/details/78226569
使用依赖
compile 'io.reactivex:rxjava:1.3.0' compile 'io.reactivex:rxandroid:1.2.1'
1 介绍几个名词(比较常用到的)
Observable:可观察的,用来发送一个事件源
Subscriber:订阅者,用来接受处理一个事件源
Subscription:当Observable订阅了Subscriber时会返回一个Subscription,这个Subscription可以对订阅关系进行管理(例如取消订阅)
Action0:一个接口,内部包含一个call(),无返回值,用来对订阅的事件源做单一的处理,类似还有Action1,Action2....区别在于后面的数字代表call参数的个数
Func0:类似与Action0这个接口,只不过他是有返回值的,同样他有Func1,Func2....
2 Observable和Subscriber的简单使用
a,创建一个Observable(事件源)例如网络请求或者复杂的逻辑处理可以放在这里面,当处理完需要用onNext方法把结果发送出去
b,创建一个Subscriber,在这里可以获得处理的结果Observable<String> myObservable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("first....."); subscriber.onCompleted(); } });
c,Observable订阅SubscriberSubscriber<String> mySubscriber = new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d("1--", s); } };
d,连起来写就是myObservable.subscribe(mySubscriber);
或者Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("first....."); subscriber.onCompleted(); } }).subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d("1--", s); } });
可以发现上面两种一个是用Subscriber另一个是Action1,Subscriber有三个方法,对应不同的处理结果,Action1对应的是onNext方法Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("first....."); subscriber.onCompleted(); } }).subscribe(new Action1<String>() { @Override public void call(String s) { } });
3 Subscription简单使用
通过调用Subscription subscription1 = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("first....."); subscriber.onCompleted(); } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("6--", s); } });
取消订阅,这个方法的在android中的主要用处在于当Activity被销毁了,如果没有解除订阅,Action1中如果引用了Activity对象,这是就可能会发生内存溢出,所以在subscription.unsubscribe();
Activity被销毁时要解除订阅。
4 Func1简单使用
Subscription subscription1 = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("1");
subscriber.onNext("2");
subscriber.onCompleted();
}
}).filter(new Func1<String, Boolean>() {
@Override
public Boolean call(String s) {
return s.equals("2") ? true : false;
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.d("6--", s);
}
});
我们发现Func1在filter方法中顾名思义就是过滤的意思,Func1的作用就是自定义一个方法对发送的数据进行判断,如果是2就为true,所以最终打印出来的数据为2
5 插几个不错的文章