美文网首页
Rxjava2基本用法(一),kotlin及Java版本对照

Rxjava2基本用法(一),kotlin及Java版本对照

作者: 眺望天空 | 来源:发表于2019-06-14 22:29 被阅读0次

今天写一写Rxjava2的基本使用,Rxjava2虽然使用广泛,但已经不算是什么新框架了,从16年大火到现在已经好几年了。网上也有很多例子,总体来讲就像是官方文档的翻译,再具体项目中的实际案例很少,本系列将从浅入深逐步讲解,希望都有所收获。

本篇文章主要写Rxjava2最基本的使用,并且会有Kotlin与java两个版本的对照。

Rxjava,RxAndroid使用写作时的最新版本

implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.9'

kotlin版简单入门

private fun tryRxjava2ByKotlin() {
        val mObservable = Observable.create(ObservableOnSubscribe<String> {
            it.onNext("北京")
            it.onNext("生活")
            it.onNext("精彩")
            it.onComplete()
        })

        val mObserver = object : Observer<String>{
            override fun onComplete() {
            }

            override fun onSubscribe(d: Disposable) {
            }

            override fun onNext(t: String) {
                Log.d("MainActivity", t)
            }

            override fun onError(e: Throwable) {
            }

        }

        mObservable.subscribe(mObserver)
    }

其中mObservable可以进一步简化成以下形式,其它不变

val mObservable = Observable.create<String> {
            it.onNext("北京")
            it.onNext("生活")
            it.onNext("精彩")
            it.onComplete()
        }

java版简单入门

private void tryRxjava2ByJava() {

        Observable<String> mObservable = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("北京");
                emitter.onNext("生活");
                emitter.onNext("精彩");
                emitter.onComplete();
            }
        });

        Observer<String> mObserver = new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.d(TAG, "onSubscribe");
            }

            @Override
            public void onNext(String s) {
                Log.d(TAG, s);
            }

            @Override
            public void onError(Throwable e) {
                Log.d(TAG, "onError");
            }

            @Override
            public void onComplete() {
                Log.d(TAG, "onComplete");
            }
        };

        mObservable.subscribe(mObserver);

kotlin实现Rxjava2简化用法

private fun tryEasyRxjava2ByKotlin() {

        Observable.just("北京","生活", "美好")
            .subscribe { t -> Log.d("MainActivity", t) }
    }

也可以写成

private fun tryEasyRxjava2ByKotlin() {

        Observable.just("北京", "生活", "精彩")
            .subscribe { Log.d("MainActivity", it }
    }

java实现Rxjava2简化用法

private void tryEasyRxjava2ByJava() {
        Observable.just("北京","生活","美好")
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {
                        Log.d("MainActivity", s);
                    }
                });
    }

看到这里是不是发现了什么,就是kotlin借助语法糖与Lambda表达式更简洁。以上例子中都是单独定义的变量,实际是可以写成链式调用的。

第一篇的简单使用到这里就结束了。

相关文章

网友评论

      本文标题:Rxjava2基本用法(一),kotlin及Java版本对照

      本文链接:https://www.haomeiwen.com/subject/isymfctx.html