RxJava 山东卷

作者: Android那些事儿 | 来源:发表于2020-08-13 20:50 被阅读0次

一、考试须知

全国卷 通过后,才能参加本次考试。

考试类型:开卷

作弊行为:运行源代码

二、试题 - 单项选择

rxJavaExamination1();
rxJavaExamination2();
rxJavaExamination3();

// 核心:主题多次subscribe
private void rxJavaExamination1() {
    Observable<Long> observable = Observable.interval(5, TimeUnit.MILLISECONDS)
            .take(Integer.MAX_VALUE);

    // 观察者1
    Consumer<Long> subscriber1 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者1 :value : " + value);
        }
    };

    // 观察者2
    Consumer<Long> subscriber2 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者2 :value : " + value);
        }
    };

    // 观察者1与主题建立关联
    Disposable disposable1 = observable.subscribe(subscriber1);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    // 观察者2与主题建立关联
    Disposable disposable2 = observable.subscribe(subscriber2);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    disposable1.dispose();
    disposable2.dispose();
}

// 核心:ObservablePublish
private void rxJavaExamination2() {
    Observable<Long> observable = Observable.interval(5, TimeUnit.MILLISECONDS)
            .take(Integer.MAX_VALUE);

    // 观察者3
    Consumer<Long> subscriber3 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者3 :value : " + value);
        }
    };

    // 观察者4
    Consumer<Long> subscriber4 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者4 :value : " + value);
        }
    };

    ConnectableObservable connectableObservable = observable.publish();
    connectableObservable.connect();

    // 观察者1与主题建立关联
    Disposable disposable3 = connectableObservable.subscribe(subscriber3);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    // 观察者2与主题建立关联
    Disposable disposable4 = connectableObservable.subscribe(subscriber4);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    disposable3.dispose();
    disposable4.dispose();
}

// 核心:ObservableRefCount
private void rxJavaExamination3() {
    Observable<Long> observable = Observable.interval(5, TimeUnit.MILLISECONDS)
            .take(Integer.MAX_VALUE);

    // 观察者5
    Consumer<Long> subscriber5 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者5 :value : " + value);
        }
    };

    // 观察者6
    Consumer<Long> subscriber6 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者6 :value : " + value);
        }
    };

    // 观察者7
    Consumer<Long> subscriber7 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者7 :value : " + value);
        }
    };

    // 观察者8
    Consumer<Long> subscriber8 = new Consumer<Long>() {
        @Override
        public void accept(@NonNull Long value) throws Exception {
            Log.d(Tags.HLWANG_TAG, "观察者8 :value : " + value);
        }
    };

    ConnectableObservable connectableObservable = observable.publish();
    connectableObservable.connect();

    observable = connectableObservable.refCount();

    // 观察者1与主题建立关联
    Disposable disposable5 = observable.subscribe(subscriber5);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    // 观察者2与主题建立关联
    Disposable disposable6 = observable.subscribe(subscriber6);
    disposable5.dispose();
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    disposable6.dispose();

    Log.d(Tags.HLWANG_TAG, "-----------------------");

    // 观察者1与主题建立关联
    Disposable disposable7 = observable.subscribe(subscriber7);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    // 观察者2与主题建立关联
    Disposable disposable8 = observable.subscribe(subscriber8);
    try {
        Thread.sleep(100L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    disposable7.dispose();
    disposable8.dispose();
}

A :

观察者1与观察者2,都不是从0输出
观察者3 从0输出,观察者4不从0输出
观察者5 从0输出,观察者6 不从0输出
观察者7 从0输出,观察者8 不从0输出

B :

观察者1与观察者2,都是从0输出
观察者3 从0输出,观察者4不从0输出
观察者5 从0输出,观察者6 不从0输出
观察者7 从0输出,观察者8 不从0输出,和观察者3、4输出行为不一致

C :

观察者1与观察者2,都是从0输出
观察者3 从0输出,观察者4不从0输出
观察者5 从0输出,观察者6 不从0输出
观察者7 从0输出,观察者8 不从0输出,和观察者3、4输出行为一致

D :

观察者1与观察者2,都是从0输出
观察者3 不从0输出,观察者4不从0输出
观察者5 从0输出,观察者6 从0输出
观察者7 不从0输出,观察者8 不从0输出

E :

以上,无正确答案,我要评论正确答案

相关文章

  • RxJava 山东卷

    一、考试须知 全国卷 通过后,才能参加本次考试。 考试类型:开卷 作弊行为:运行源代码 二、试题 - 单项选择 A...

  • 家常饭——卷饼

    卷饼,我最喜欢吃卷饼的地方应该是山东,山东的煎饼卷大葱听着就感觉有骨子豪迈,但也紧紧是听过,山东卷饼的具体情况不得...

  • 碑记 | 时氏人名——《山东道教碑刻集(临朐卷)》

    时氏人名——《山东道教碑刻集(临朐卷)》 《山东道教碑刻集(临朐卷)》辑录了山东临朐境内现存与道教相关的碑碣、墓志...

  • 看图猜答案:2013年理数山东卷题8

    2013年理数山东卷题8 【看图答题】 众所周知,山东卷的难度要高于全国卷. 下面我们试一下,“看图答题” 的办法...

  • RxJava 全国卷

    上岗先考试。 道路千万条,“线程安全” 第一条。行车不规范,CaseStudy 两行泪!!! A : B : C ...

  • 碑记 | 时氏人名——《山东道教碑刻集(青州、昌乐卷)》

    时氏人名——《山东道教碑刻集(青州、昌乐卷)》 《山东道教碑刻集(青州昌乐卷)》是青州、昌乐两地碑刻的收集与整理,...

  • 山东青州国宝――状元卷

    一个偶然的原因,我们有空到山东省青州市博物馆进行参观。 青州市博物馆的建筑、馆藏文物、馆内的管理都使我们很...

  • 无标题文章

    [TOC] 什么是rxjava 什么是rxjava 什么是rxjava 什么是rxjava 什么是rxjava 什...

  • RxJava2

    一、RxJava GitHub: RxJava2Demo 二、RxJava的概念 RxJava RxAndroid...

  • rxjava2+retorfit.md

    [TOC] ## 什么是rxjava ## 什么是rxjava ## 什么是rxjava ## 什么是rxjava...

网友评论

    本文标题:RxJava 山东卷

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