Rxjava,详细介绍。

                        生活有度,人生添寿.

                                                                              -----2liu


               首先,我先说一下RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava。RxJava 的本质可以压缩为异步这一个词。

 
优点:

           异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 创造的AsyncTaskHandler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。

         为什么要用rxjava,本人的理解是: 在一个项目工程中需要在子线程做耗时操作,在主线程对页面进行展示修改,子线程和主线程通信较多时使用handler,有时候会出现混乱,或者在后期修改项目的时候,容易看晕或者得重新整理思路,特别麻烦,这时候如果使用Rxjava2.0,会合理解决这一系列问题。

   RxJava 的异步实现,是通过一种扩展的观察者模式来实现的。

      对于观察者模式:我简单解释一下:假如 你去菜市场去买菜,你就是观察者,菜的价钱就是被观察者,通过菜市场老板达成订阅关系,当菜的价钱提高或者降低时,观察者需要做出响应,观察者可以选择买或者不买。还有Android 开发中一个比较典型的例子是点击监听器OnClickListener 。对设置OnClickListener 来说, View 是被观察者,OnClickListener 是观察者,二者通过setOnClickListener() 方法达成订阅关系。订阅之后用户点击按钮的瞬间,Android Framework 就会将点击事件发送给已经注册的OnClickListener 。采取这样被动的观察方式,既省去了反复检索状态的资源消耗,也能够得到最高的反馈速度。

        

RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、subscribe (订阅)、事件。ObservableObserver 通过subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知Observer

与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() /onEvent())之外,还定义了两个特殊的事件:onCompleted()onError()

  • onCompleted(): 事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的onNext() 发出时,需要触发onCompleted() 方法作为标志。
  • onError(): 事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出。
  • 在一个正确运行的事件序列中, onCompleted()onError() 有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted()onError() 二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。
RxJava 使用 create(),just(),from() 方法来创建一个 Observable ,并为它定义事件触发规则:

详细请看:http://gank.io/post/560e15be2dca930e00da1083#toc_1   里面有详细介绍

说了这么多,来点代码吧:  

String[]={"你好","我好","大家好"}
//定义一个被观察者:
 Observable observable=Observable.from(words);
 //产生订阅关系通过subscribe
observable.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
}

@Override
public void onError(Throwable e) {
}

@Override
public void onNext(String s) {
      
Log.i("sss",s);//会把上面的数组里面的东西全部打印出来
}

在请看下面的代码:


   String[] words = {"Hello", "Hi", "Aloha"};
//创建被观察着
 observable = Observable.from(words);
       下面的都是观察者,都是Rxjava里面的接口。
 Action1<String> onNextAction=new Action1<String>() {
            @Override
            public void call(String s) {

                Log.i("a1",s);
            }
        };

        Action1<Throwable> onErrorAction = new Action1<Throwable>() {
            // onError()
            @Override
            public void call(Throwable throwable) {
                Log.i("a2",throwable+"");
            }
        };
        Action0 onCompletedAction = new Action0() {
            // onCompleted()
            @Override
            public void call() {
                Log.d("a3", "completed");
            }
        };


// 自动创建 Subscriber ,并使用 onNextAction 来定义 onNext()
        observable.subscribe(onNextAction);
// 自动创建 Subscriber ,并使用 onNextAction 和 onErrorAction 来定义 onNext() 和 onError()
        observable.subscribe(onNextAction, onErrorAction);
// 自动创建 Subscriber ,并使用 onNextAction、 onErrorAction 和 onCompletedAction 来定义 onNext()、 onError() 和 onCompleted()
        observable.subscribe(onNextAction, onErrorAction, onCompletedAction);

        }
//你打印log看一下,再看看观察者模式,大概简单的运用就差不多了。
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值