zoukankan      html  css  js  c++  java
  • android学习笔记(2)--RxJava

    紧接上一篇博文,本篇介绍RxJava,一个实现异步操作的库

    RxJava最核心的两个东西是Observables和Subscribers

    1.Observables(被观察者,事件源)发出一系列事件

    2.Subscribers(观察者)处理这些事件

    这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据等等)

    一个Observable可以发出零个或者多个事件,知道结束或者出错。

    每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。

    Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。

    eg.一个用RxJava来打印Hello World的程序

    1.创建一个Observable:调用Observable.create
     
     
    Observable<String> myObservable = Observable.create(  
        new Observable.OnSubscribe<String>() {  
            @Override  
            public void call(Subscriber<? super String> sub) {  
                sub.onNext("Hello, world!");  
                sub.onCompleted();  
            }  
        }  
    );  

    也可以用简化版本:

    Observable<String> myObservable = Observable.just("Hello, world!")

    这里定义的Observable对象仅仅发出一个Hello World字符串,然后就结束。

    2.创建Subscriber,用于处理Observable对象发出的字符串。

    Subscriber<String> mySubscriber = new Subscriber<String>() {  
        @Override  
        public void onNext(String s) { System.out.println(s); }  
      
        @Override  
        public void onCompleted() { }  
      
        @Override  
        public void onError(Throwable e) { }  
    };  

    简化版本:

    Action1<String> onNextAction = new Action1<String>() {  
        @Override  
        public void call(String s) {  
            System.out.println(s);  
        }  
    };  

    subscriber仅仅就是打印observable发出的字符串。

    3.subscribe函数将myObservable对象和mySubscriber对象关联。完成了subscriber对observable的订阅。

    myObservable.subscribe(mySubscriber);  

    如果之前用的Action1的类,那么用下面的方法订阅:

    myObservable.subscribe(onNextAction);  

    合成之前的简洁版本,可以这样写:

    Observable.just("Hello, world!")  
        .subscribe(new Action1<String>() {  
            @Override  
            public void call(String s) {  
                  System.out.println(s);  
            }  
        });

    4.完成。现在mySubscriber订阅了myObservable,myObservable就是调用mySubscriber对象的onNext和onComplete方法,mySubscriber就会打印出Hello World!

    以上是简单的RxJava的用法,下面来看一下MovieGuide中是如何使用RxJava:

    在MovieGuide中,RxJava主要在迭代器类中使用

    //todo

     

     
  • 相关阅读:
    编译openwrt时报错build_dir/hostpkg/libubox-2018-07-25-c83a84af/blobmsg_json.c:21:19: fatal error: json.h: No such file or directory
    git add时遇到类似fatal: Path 'XXX' is in submodule 'XXX'错误提示如何解决?
    select下拉框多选取值
    JavaScript substr() 方法
    select2多选设置select多选,select2取值和赋值
    bootstrap select 多选的用法,取值和赋值(取消默认选择第一个的对勾)
    Bootstrap select 多选并获取选中的值
    Bootstrap select多选下拉框实现代码
    Bootstrap selectpicker 下拉框多选获取选中value和多选获取文本值
    Mysql中EXISTS关键字用法、总结
  • 原文地址:https://www.cnblogs.com/summerxt/p/6065192.html
Copyright © 2011-2022 走看看