RxJava基本变换使用

一、基本案例实现
public void click(View v){
        // 想象工厂中的流水线
        // 创建 Observable 被观察者 / 可观察对象
        Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                int result = 10 / 5;
                // onNext 可以调用多次
                subscriber.onNext(result + “”);
                subscriber.onNext(“itcast”);
                // 事件序列结束标记
                subscriber.onCompleted();
                // 事件错误的标记
                //subscriber.onError();
            }
        }).subscribe(new Observer<String>() {
          // 订阅事件 指定观察者, 被观察者必须指定了观察者, 整个事件流程才可以被启动
            @Override
            public void onNext(String s) {
                System.out.println(“onNext: ” + s);
            }
            @Override
            public void onError(Throwable e) {
            }
            @Override
            public void onCompleted() {
                System.out.println(“onCompleted”);
            }
        });
    }

二、被观察者的变形
public void click1(View v){
    Observable.just(1, 2)
            .subscribe(new Observer<Integer>() { // 观察者
                @Override
                public void onCompleted() {
                    System.out.println(“onCompleted”);
                }
                @Override
                public void onError(Throwable e) {
                }
 
                @Override
                public void onNext(Integer integer) {
                    System.out.println(“onNext: ” + integer);
                }
            });
}

三、变换案例1
public void click2(View v) {
    String[] array = {“url1”, “url2”};
    // 订阅者
    subscriber = new Subscriber<String>() {
        @Override
        public void onCompleted() {
            System.out.println(“onCompleted”);
        }
 
        @Override
        public void onError(Throwable e) {
        }
 
        @Override
        public void onNext(String s) {
            System.out.println(“onNext: ” + s);
        }
    };
    Observable.from(array)
            .subscribe(subscriber);
}

三、变换案例2
public void click3(View v) {
    String[] array = {“url1”, “url2”, “url3”};
 
    Observable.from(array)
            .subscribe(new Action1<String>() { // onNext闭包
                @Override
                public void call(String s) {
                    System.out.println(“next call: ” + s);
                }
            });
}

三、变换案例3
public void click4(View v) {
    String[] array = {“url1”, “url2”, “url3”};
 
    Observable.from(array)
            .subscribe(new Action1<String>() { // onNext闭包
                @Override
                public void call(String s) {
                    System.out.println(“next call: ” + s);
                }
            }, new Action1<Throwable>() { // onError
                @Override
                public void call(Throwable throwable) {
 
                }
            }, new Action0() {
                @Override
                public void call() {  // Complete
                    System.out.println(“complete: “);
                }
            });
}

留下评论

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理