• Rxjava学习笔记


    1、使用Observable.range(int start, int count)创建一个发射特定整数序列的Observable,第一个参数为起始值,第二个为发送的个数,如果为0则不发送,负数则抛异常。

    import rx.Observable;
    import rx.Subscriber;
    
    public class MyDemo {
    
        public static void main(String[] args) {
            //创建发射源(被观察者)
            Observable<Integer> observable = Observable.range(1, 5);
            //创建接收源(观察者)
            Subscriber<Object> subscriber = new Subscriber<Object>() {
                @Override
                public void onStart() {
                    System.out.println("Subscriber onStart: ");
                }
    
                @Override
                public void onCompleted() {
                    System.out.println("Subscriber onCompleted: ");
                }
    
                @Override
                public void onError(Throwable e) {
                    System.out.println("Subscriber onError: " + e.toString());
                }
    
                @Override
                public void onNext(Object t) {
                    System.out.println("Subscriber onNext: " + t);
                }
            };
            //订阅
            observable.subscribe(subscriber);
        }
    }

    2、Subscriber的简化

    RxJava提供了Action0等一系列的类似的类,当我们不需要(或者不关心)Subscriber的全部方法(如只关心onNext方法),就可以使用Action类来替代Subscriber。

    2.1、当我们并不关心OnComplete和OnError,可以使用 subscribe(onNextAction),我们只需要在onNext的时候做一些处理,这时候就可以使用Action1类:

    import rx.Observable;
    import rx.functions.Action1;
    
    public class MyDemo {
    
        public static void main(String[] args) {
            Person person = new Person(21, "js");
            //创建发射源(被观察者)
            Observable<Person> observable = Observable.just(person);
            //订阅,创建接收源(观察者)
            observable.subscribe(new Action1<Person>() {
    
                @Override
                public void call(Person t) {
                    System.out.println("Action1 call:" + t.toString());
                }
            });
        }
        private static class Person{
            private int age;
            private String name;
            
            public Person(int age, String name) {
                this.age = age;
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            
            @Override
            public String toString() {
                return "Person[age=" + age + ",name=" + name + "]" ;
            }
        }
    }

    2.2、subscribe方法还有两个重载方法,分别是:

    • 两个参数: subscribe(onNextAction , onErrorAction)
    • 三个参数: subscribe(onNextAction , onErrorAction ,onCompletedAction)
    import rx.Observable;
    import rx.functions.Action0;
    import rx.functions.Action1;
    
    public class MyDemo {
    
        public static void main(String[] args) {
            Person person = new Person(21, "js");
            //创建发射源(被观察者)
            Observable<Person> observable = Observable.just(person);
            //订阅,创建接收源(观察者)
            Action1<Person> onNextAction = new Action1<Person>() {
                @Override
                public void call(Person t) {
                    System.out.println("Action1 call:" + t.toString());
                }
            };
            Action1<Throwable> onErrorAction = new Action1<Throwable>() {
                @Override
                public void call(Throwable t) {
                    System.out.println("Action1 call:" + t.toString());
                }
            };
            Action0 onCompletedAction = new Action0() {
                @Override
                public void call() {
                    System.out.println("Action0 call");
                }
            };
            observable.subscribe(onNextAction, onErrorAction);
            observable.subscribe(onNextAction, onErrorAction, onCompletedAction);
        }
        private static class Person{
            private int age;
            private String name;
            
            public Person(int age, String name) {
                this.age = age;
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            
            @Override
            public String toString() {
                return "Person[age=" + age + ",name=" + name + "]" ;
            }
        }
    }
  • 相关阅读:
    android 多线程
    Uva 10881 Piotr’s Ants 蚂蚁
    LA 3708 Graveyard 墓地雕塑 NEERC 2006
    UVa 11300 Spreading the Wealth 分金币
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    HDU 4162 Shape Number
    HDU 1869 六度分离
    HDU 1041 Computer Transformation
    利用可变参数函数清空多个数组
  • 原文地址:https://www.cnblogs.com/jiangwangxiang/p/12014274.html
Copyright © 2020-2023  润新知