RXJAVA基础

今天主要学习了一下RXJava;

接下来说一下这个RXjava:
有些时候可能不知道RXjava是什么 那他又有什么优势,优势其实用一个词就可以概括,那就是简洁,而RxAndroid是RxJava在Android上的一个扩展,Retorfit、OkHttp组合起来使用,而且用它似乎可以完全替代eventBus和OTTO。

一、RXjava 可以用来干什么:

         RX(Reactive Extensions)是一个库,用来处理事件和异步任务,很简单实白的说RxJava就是处理异步的一个库,最基本是基于观察者模式来实现的,而RXjava它完全可以替代EventBus和OTTO。

二、RXjava的优势:

        最简单的一个词:简洁。而且当业务越繁琐越复杂时这一点就越显出优势——它能够保持简洁。

Observable、Subscribers
简单的来说一下其实就是我们都知道的观察者模式,订阅模式而已,

     1. Observable事件源,被观察者。
2. Subcriblers 观察者,事件订阅者
3. Observer 同Subcribler差不多
4. subscribe() 方法,绑定Observable与Subcribler或者Observabler

三、Observable的创建:

         public final static <T> Observable<T> create(OnSubscribe<T> f) {  
               return new Observable<T>(hook.onCreate(f));    
         }
         
         Observable<String> mObservable = Observable.create(new                   Observable.OnSubscribe<String>() {    
                 @Override         
                 public void call(Subscriber<? super String> subscriber) {  
       } 
     });

四、Subscriber的创建

              Subscriber<String> mTestSubscriber = new Subscriber<String>() {      
                    @Override     
                     public void onCompleted() {  
                              
                               }       
                     @Override          
                    public void onError(Throwable e) {   
                              }          
                      @Override   
                    public void onNext(String s) {     
                            }     
                     };

五、操作符

         //flatMap操作符
        public static void flatMapOpretor() {
             User user = new User();
             user.userName = "zhangsan";
             user.addresss = new ArrayList<>();
              
            User.Address address1 = new User.Address();
            User.Address address1 = new User.Address();
            address1.street = "河北路";
            address1.city = "天津";
            user.addresss.add(address1);
          
             Observable.just(user)
                 .flatMap(new Function<User, ObservableSource<User.Address>>() {
                @Override
                public ObservableSource<User.Address> apply(User user) throws Exception {
                    return Observable.fromIterable(user.addresss);
                }
            }) .subscribe(new Consumer<User.Address>() {
            @Override
                public void accept(User.Address address) throws Exception {
                  System.out.println("地址是:" + address.street);
                      }
    });
    }
         
           //distinct过滤掉重复的数据项
        public static void distinctOperator() {
            Observable.just("A","A","B") .distinct().subscribe(new Consumer<String>() {
             @Override
                public void accept(String integer) throws Exception {
                    System.out.println("next :" + integer);
                  }
                   });
         }
         
         //elementAt 只发射第n项数据
     public static void elementAtOperator() {
      Observable.just(1,2,3,4,5,6,7) .elementAt(2) .subscribe(new Consumer<Integer>() {            
          @Override
                public void accept(Integer integer) throws Exception {
                    System.out.println("next:" + integer);
                 }
                  });
          }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值