RXJava

关于: https://github.com/lzyzsd/Awesome-RxJava
一、Observables和Subscribers
Observables是被观察者,发出一系列事件,操作事件,(如:网络请求,查询数据库);Subscribers是观察者,处理结果(如:显示请求后数据,显示查询结果)。

一个Observables可以发出零个或多个事件,指导事件的结束或出错;调用Subscriber的onNext()或onError()处理事件,调用onError()时结束

如果Observables没有Subscriber,则它不会发出任何事件。

二、配置

build.gradle
compile ‘io.reactivex:rxjava:1.1.5’
compile ‘io.reactivex:rxandroid:1.1.0’
三、使用

方式一:

1.创建Observable

Observable.create(),泛型为对应观察者接收的类型。call()方法为重写观察者的相应方法(传入参数)。

Observable<String> myObservable=Observable.create(new Observable.OnSubscribe<String>() {
     @Override
     public void call(Subscriber<? super String> subscriber) {
         subscriber.onNext("Hello World");//Subscriber的onNext()方法会被调用
         subscriber.onCompleted();//Subscriber的onCompleted()会被调用
     }
});

2.创建Subscriber

方法为对应实现。

Subscriber<String> subscriber=new Subscriber<String>() {
        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onNext(String s) {
                System.out.println(s);

        }
    };

Observable.just()会自动向下执行Subscriber的onNext()和onComplete()或onError(),Observable.create()则需要调用Subscriber的方法。

3.观察者和被观察者关联起来

观察者执行onNext()中内容。

myObservable.subscribe(subscriber);  

方式二:

Observable.just()创建Observable,.subscribe()关联观察者,参数是执行的操作。

Observable.just("方式二").subscribe(new Action1<String>() {
        @Override
        public void call(String s) {
            System.out.println(s);
        }
    });

关于操作符:

是一种流操作,不是一个操作符执行完后执行下一个,当循环的时候遍历子集,执行一个子集的流操作。例如:flatmap()后,多个doOnNext(),最后subscribe(),执行的是从上到下整体再循环,不是一个操作符循环技术后执行下一个。

1.map():对一个Observable的连续操作(响应式编程),将最后的结果给Subscriber处理。

泛型

Observable.just("12").map(new Func1<String, Integer>() {
        @Override
        public Integer call(String s) {
            return Integer.valueOf(s)+1;
        }
    }).map(new Func1<Integer, String>() {
        @Override
        public String call(Integer integer) {
            return String.valueOf(integer)+"-------";
        }
    }).subscribe(new Action1<String>() {
        @Override
        public void call(String s) {
            System.out.println(s);
        }
    });

2.from() 参数为集合/数组,省掉遍历的过程。

 String[] item = {"1", "2"};

    Observable.from(item).subscribe(new Action1<String>() {
        @Override
        public void call(String o) {
            System.out.println(o);
        }
    });

3.flatMap()

    Observable.create(new Observable.OnSubscribe<String[]>() {

        @Override
        public void call(Subscriber<? super String[]> subscriber) {
            subscriber.onNext(item);
        }
    }).flatMap(new Func1<String[], Observable<String>>() {
        @Override
        public Observable<String> call(String[] strings) {
            return Observable.from(strings);
        }
    }).subscribe(new Action1<String>() {
         @Override
         public void call(String o) {
             System.out.println(o+"----");
         }
     });

4.take()参数为int类型,表示指定最多几个结果。

5.doOnNext()对传入数据的额外操作,并不会影响数据源的值。(例如在输出前存储等)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值