Rxjava相关安卓开发Android进阶之路

(一)RxJava初体验

2016-07-30  本文已影响358人  吻中求胜

===================================

今年听到最多的一个词,rxjava+retrofit。火爆程度简直不亚于房价。既然RxJava是今年很火的一门技术,那么要学习一门技术,就要带着这样的疑问,它究竟是什么?它能解决什么问题?对比现有的技术它有什么优势?


RxJava 是什么?

如何使用

对比其他技术理解为什么要选择RxJava

RxJava 使用流程

  1. 创建 Observable 被观察者
  2. 初始化被观察(订阅)后的事件序列
  3. 创建 Observer/Subscriber 观察者/订阅者
  4. 订阅 Subscribe

基本形式

一个最基本的实现: 大家可能暂时看不出有什么作用,这里先讲清基本形式

      //创建一个Observable    /   事件处理
    Observable.create(new Observable.OnSubscribe<String>() {            
        @Override          
        public void call(Subscriber<? super String> subscriber) {         

             subscriber.onNext("Hello rxjava");            
            //事件序列结束              
            subscriber.onCompleted();
    //              subscriber.onError();         
         }        
            //指定一个观察者/事件流程才会启动/在回调中接收结果      
          }).subscribe(new Subscriber<String>() {        
        @Override       
       public void onCompleted() {      

         }       
       @Override         
       public void onError(Throwable e) {  
 
         }        

       @Override        
       public void onNext(String s) {      

        }    
    });
      

  Observable.just(1, 2, 3)      
    .subscribe(new Observer<Integer>() {    
      @Override          
      public void onCompleted() {     

       }         
      @Override          
      public void onError(Throwable e) {      

       }         
      @Override        
      public void onNext(Integer integer) {       

       }    
  });


String a[] = {"url1","url2","url3"};
 Observable.from(a)      
    .subscribe(new Observer<Integer>() {    
      @Override          
      public void onCompleted() {     

       }         
      @Override          
      public void onError(Throwable e) {      

       }         
      @Override        
      public void onNext(Integer integer) {       

       }    
  });

另一种形式/Subscriber

 Observable.just(1, 2, 3)      
      .subscribe(new Subscriber<Integer>() {        

          @Override         
          public void onStart() {        
          super.onStart();
              
         }         
         @Override        
         public void onCompleted() {
       
         }          
         @Override         
         public void onError(Throwable e) {
     
         }        
        @Override      
        public void onNext(Integer integer) {  

         }      
});

另一种形式/选择性的传入参数/编程中的闭包(将一个操作以对象的方式传入)

Observable.just(1, 2, 3)      
    .subscribe(new Action1<Integer>() {   
       @Override      
       public void call(Integer integer) {     

       }   
 });


Observable.just(1, 2, 3)     
 .subscribe(new Action1<Integer>() {      
  @Override   
     public void call(Integer integer) {
            System.out.println("onNext");
        }       
 }, new Action1<Throwable>() {
        @Override
        public void call(Throwable throwable) {
        }       
 }, new Action0() { 
       @Override
        public void call() {
            System.out.println("onCompleted");
        }
 });

未完待续···

上一篇 下一篇

猜你喜欢

热点阅读