RxJava个人笔记,具象化理解

看别人的RxJava 虽然能懂,但是觉得,没必要的描述了大笔篇幅。

自己整理一些具象场景帮助自己理解Rxjava这个比较抽象的框架。

只是为了开发理解上方便,做个小计,逻辑等方面不符合什么的,请勿喷!!!你可以右上角点击关闭,谢谢!!!


Observables(被观察者,事件源)    具象 :小偷
Subscribers(观察者)                        具象 :警察
Subscriber的onNext方法                     具象 :警察在被盗地点进行调查
Subscriber.onError()                            具象 :警察在被盗地点进行调查,但是这次是谎报




/***********************************************
******************* 第 一 幕********************
**************************************************/

//小偷 

Observable<String> myObservable = Observable.create(  
    //小偷留下偷盗痕迹
    new Observable.OnSubscribe<String>() {  
        @Override  
        public void call(Subscriber<? super String> sub) {  
	    //小偷留下 “一句话线索”
            sub.onNext("今夜,小爷来此一盗!");  
            sub.onCompleted();  
        }  
    }  
); 


//警察
Subscriber<String> mySubscriber = new Subscriber<String>() {  
    @Override  
    public void onNext(String s) { 
	//警察接警后,来到现场看到了,小偷留下 “一句话线索”
	System.out.println(s); 
    }  
  
    @Override  
    public void onCompleted() { }  
  
    @Override  
    public void onError(Throwable e) { }  
};  

 
//有人报警
myObservable.subscribe(mySubscriber);  


//上边简单的写法


//小偷 盗窃

Observable<String> myObservable = Observable.just("今夜,小爷来此一盗!"); 

//警察反应 
Action1<String> onNextAction = new Action1<String>() {  
    @Override  
    public void call(String s) {  
        System.out.println(s);  
    }  
};  

//警察接警
myObservable.subscribe(onNextAction);  


//最简洁写法
Observable.just("Hello, world!")  
    .subscribe(new Action1<String>() {  
        @Override  
        public void call(String s) {  
              System.out.println(s);  
        }  
    });  

//使用java8的lambda可以使代码更简洁
Observable.just("Hello, world!").subscribe(s -> System.out.println(s));


/***********************************************
******************* 第 二 幕 ********************
**************************************************/

操作符(Operators)
//小偷聪明了,犯案后,可以对盗窃痕迹进行二次处理,然后,警察来到现场,看到了加密后的犯案线索

Observable.just("今夜,小爷来此一盗!")  
  .map(new Func1<String, String>() {  
      @Override  
      public String call(String s) {  
          return "-----清理掉线索----";  
      }  
  })  
  .subscribe(s -> System.out.println(s));  
//注明下,这里的Func1的第一个String代表传入参数类型,即小偷的痕迹,第二个String代表要加密后线索的类型


使用lambda可以简化为
Observable.just("今夜,小爷来此一盗!")  
    .map(s -> "-----清理掉线索----")  
    .subscribe(s -> System.out.println(s));  


map操作符进阶
//小偷更加高明了,加密输出的线索,不再是单向输出,可以任意输出类型,警察头更大了
Observable.just("Hello, world!")  
    .map(s -> s.hashCode())  
    .map(i -> Integer.toString(i))  
    .subscribe(s -> System.out.println(s));

//可以任意步加密,想怎么弄怎么弄,弄得不爽,又还原回去都可以
Observable.just("Hello, world!")  
    .map(s -> s.hashCode())  
    .map(i -> Integer.toString(i))  
    .subscribe(s -> System.out.println(s));  


1.Observable和Subscriber可以做任何事情
Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。


2.Observable和Subscriber是独立于中间的变换过程的。
在Observable和Subscriber中间可以增减任何数量的map。整个系统是高度可组合的,操作数据是一个很简单的过程。


//总的一句话,就是,小偷(Observable)比较灵活,想干嘛干嘛,反正警察(Subscriber)最后会过来给我擦屁股的

详细解说:http://blog.csdn.net/lzyzsd/article/details/41833541/


你可能感兴趣的:(RxJava个人笔记,具象化理解)