分分钟学会RxAndroid的使用(一)

最近mvp+retrofit+RxAnroid的模式开发应用灰常之火,笔者也觉得是时候学习一波了。花了几天的时间学习了一下RxAndroid,RxAndroid是基于Rxjava的拓展,与RxJava相比,除了多了一个线程调度比较常用,与RxJava无异。但是值得一提的是,相对老一点版本的RxAndroid,新版本中少了一些东西,比如生命周期(bindactivity),与ViewObservable等。详情参见这篇文章:

        升级到RxAndroid 1.0

RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。

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

下面开始就讲讲使用:

引入:

    compile 'io.reactivex:rxjava:1.1.0'
    compile 'io.reactivex:rxandroid:1.1.0'

说白了Rxjava 其实就是一种观察者模式。observable 被观察者,observer、subscriber是观察者。当观察者注册观察的某一行为后,当被观察者发生该行为时就会通知观察者。

观察者的创建方式:

第一种Observer的创建方式:

Observer<Bitmap> observer = new Observer<Bitmap>() {
                @Override
                public void onNext(Bitmap bitmap) {
                   
                }

                @Override
                public void onCompleted() {
                    Log.d(tag, "Completed!");
                }

                @Override
                public void onError(Throwable e) {
                    e.printStackTrace();
                    Log.d(tag, "Error!");
                }
            };
第二种Subscriber的创建方式:

 Subscriber subscriber=new Subscriber() {
                    @Override
                    public void onCompleted() {
                        
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(Object o) {

                    }
                };
接下来是被观察者的创建方式:

<pre style="background-color:#21282d;color:#e0e2e4;font-family:'Consolas';font-size:13.5pt;">
<span style="color:#e8e2b7;"></span>
Observable<Object> observable =Observable.create(new Observable.OnSubscribe<Object>() { @Override public void call(Subscriber<? super Object> subscriber) { subscriber.onNext("1"); subscriber.onNext("2"); subscriber.onCompleted(); } });

 
建立订阅关系: 

observable.subscribe(observer);
observable.subscribe(subscriber);

这样就观察者与被观察者就建立了关系,分别会调用观察者中的onnext方法,oncompleted在其中执行相应的操作。到此,最最基本的使用就是这样,当然这也是最基本的。Rxjava的强大也远不及此。

除上述的方式进行注册订阅关系外,还有两种更简易的方式。

    

Observable.from();
Observable.just();
这两种方式会自动进行订阅处理,关于这两者的参数请自行进行查看api,重载比较多,不做详细介绍。

具体请查看测试代码吧,分享个链接:

Rx测试demo

下一篇,将介绍RxAndroid的操作符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值