工作生活

Rxjava2的基本使用

2019-07-02  本文已影响0人  天地玄黄

前言:Rxjava用官方的描述就是一个用于使用Java VM的可观察序列编写异步和基于事件的程序的库。
核心在于异步。异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 创造的 AsyncTask 和Handler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。这里的简洁并不是说代码量变少,而是基于流式操作的可读性让代码看起来更加容易被读懂。

基本概念
RxJava 是一个采用观察者设计模式的响应式编程框架。所以自然少不了 Observable 和 Observer了。

一个Observable可以发出0个或者多个事件,直到结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onComplete()或者Subscriber.onError()结束。

示例

Observable.just("你好")
          .map(new Function<String, String>() {
                @Override
                public String apply(String s) throws Exception {
                     return s+"啊!";
                 }
           })
          .subscribeOn(Schedulers.io())
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe(new Consumer<String>() {
           @Override
           public void accept(String s) throws Exception {
                   Log.d("结果:",s);
            }
});

这短代码的意思是,被观察者将 “你好”字符 串,拼接上“啊!”之后,发送给观察者。同时,指定了转换的操作在子线程进行,接收的操作的处理在主线程中。而上面这个代码如果用lambda表达式,则显得更简洁:

Observable.just("你好")
                        .map(s -> s+"啊!")
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(s -> Log.d("结果:",s));

Observer的创建

 Observer observer = new Observer<String>() {
            @Override
            public void onCompleted() {
                Log.e("tag", "onCompleted: ");
            }

            @Override
            public void onError(Throwable e) {
                Log.e("tag", "onError: " + e.toString());
            }

            @Override
            public void onNext(String o) {
                Log.e("tag", "onNext: " + o.toString());
            }
        };

observer 作为接收者,正常情况下会依次调用onNext方法,直到最终结束调用onComplete方法。如果遇到错误或者异常,会调用onError方法。

以上是对RxJava2的基本使用和了解,下一篇会依次介绍RxJava2的操作符。

上一篇 下一篇

猜你喜欢

热点阅读