RxJava入门初体验

在RxJava的世界里,有四个主要的角色:
Observable
Observer
Subscriber
Subjects
Observable和Subjects是两个”生产”实体,Observer和Subscriber是两个”消费”实体。

在Android的世界里我们有很多种可以用于处理异步的方法,例如Thread、HandlerThread等,可为什么还要引入RxJava呢?因为他们都需要通过第三方类似Handler来将数据转移到主线程来进行展示,而RxJava不需要他提供了链式的响应式编程无需再一步而是一步到位。

创建一个Observable

采用Observable.create()初始化一个Observable,需要传入一个OnSubscribe对象,当观察者Observer、Subscriber订阅Observable的时候就会执行call(),而它将作为一个参数传入。

               Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
                    @Override
                    public void call(Subscriber<? super String> subscriber) {
                        subscriber.onCompleted();
                    }
                });

采用Observable.from(),采用create的时候一次只能发送一条数据如果我们想一次性发送一个列表呢,这时候就得采用from方法了。

                List<String> datas = new ArrayList<>();
                datas.add("A");
                datas.add("B");
                Observable observable = Observable.from(datas);
                Subscription subscription = observable.subscribe(new Observer<String>() {
                    @Override
                    public void onCompleted() {
                        Log.i("Jayuchou", "= onCompleted = ");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i("Jayuchou", "= onError = ");
                    }

                    @Override
                    public void onNext(String s) {
                        Log.i("Jayuchou", "result = " + s);
                    }
                });

经过上面的写法我们就可以在onNext方法中成功看到输入结果。

接下来使用RxJava输出一个”Hello World”来介绍第三种方法创建Observable。
首先先声明一个输出HelloWorld方法:

    private String helloWorld() {
        return "Hello World";
    }

采用Observable.just()来创建一个Observable

                Observable observable = Observable.just(helloWorld());
                Subscription subscription = observable.subscribe(new Observer<String>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(String s) {
                        Log.i("Jayuchou", "result = " + s);
                    }
                });
            }

这样我们就成功的在onNext中看到”Hello World”,我们也看到subscribe产生订阅关系后会返回一个Subscription,用于在界面结束的时候解除订阅关系:

subscription.unsubscribe();

至此,我们就可以向RxJava响应式编程问好了!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值