Rxjava1.x学习记录(一)名词及用法的简单介绍

转载链接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方法把结果发送出去
 
 
Observable<String> myObservable = Observable.create(new Observable.OnSubscribe<String>() {
        @Override
        public void call(Subscriber<? super String> subscriber) {
            subscriber.onNext("first.....");
            subscriber.onCompleted();
        }
    });
b,创建一个Subscriber,在这里可以获得处理的结果
Subscriber<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);
        }
    };
c,Observable订阅Subscriber
myObservable.subscribe(mySubscriber);
d,连起来写就是
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);
            }
        });
或者
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) {
                
            }
        });
可以发现上面两种一个是用Subscriber另一个是Action1,Subscriber有三个方法,对应不同的处理结果,Action1对应的是onNext方法
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);
            }
        });
通过调用
subscription.unsubscribe();
取消订阅,这个方法的在android中的主要用处在于当Activity被销毁了,如果没有解除订阅,Action1中如果引用了Activity对象,这是就可能会发生内存溢出,所以在
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 插几个不错的文章

Rxjava简单入门

Rxjava操作符

Rxjava2简单入门

猜你喜欢

转载自blog.csdn.net/android_hdh/article/details/78226569
今日推荐