• RxJava 备注


    RxJava是一个采用观察者模式的异步框架,本文给出几个基本的使用例子。

    1、配置依赖:

        compile 'io.reactivex:rxjava:1.0.14'
        compile 'io.reactivex:rxandroid:1.0.1'

    2、基础(发布、订阅):

    observable = Observable.create(new Observable.OnSubscribe<String>() {
                @Override
                public void call(Subscriber<? super String> subscriber) {
                    subscriber.onNext("Step1");
                    subscriber.onNext("Step2");
                    subscriber.onNext("Step3");
                    subscriber.onCompleted();
                }
            });
    
            subscriber = new Subscriber<String>() {
    
                @Override
                public void onStart(){
                    System.out.println("onStart");
                }
    
                @Override
                public void onCompleted() {
                    System.out.println("onCompleted");
                }
    
                @Override
                public void onError(Throwable e) {
                    System.out.println("onError");
                }
                @Override
                public void onNext(String s) {
                    System.out.println("onNext"+s);
                }
            };
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    observable.subscribe(subscriber);
                }
            });

    3、采用action的写法

    Action1<String> onNextAction = new Action1<String>() {
    
                @Override
                public void call(String s) {
                    System.out.println("onNextAction" + s);
                }
            };
    
    
            Action1<Throwable> onErrorAction = new Action1<Throwable>() {
    
                @Override
                public void call(Throwable throwable) {
                    System.out.println("onErrorAction");
                }
            };
    
    
            Action0 onCompletedAction = new Action0() {
    
                @Override
                public void call() {
                    System.out.println("onCompletedAction");
                }
            };
    
            //from表示从一个数组中取参数
            Observable.just("Step1","Step2")
                    .subscribe(onNextAction,onErrorAction,onCompletedAction);

    4、Schedule接口

    //Schedulers.immediate():默认值,当前线程
            //Schedulers.computation():用以CPU密集型任务,固定线程池
            //Schedulers.io():IO操作,不固定线程池
            //Schedulers.newThread()://新线程
            Observable.just("Step1","Step2")
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread()) //主线程
                    .subscribe(onNextAction, onErrorAction, onCompletedAction);

    5、参数映射

    List<String> input = new ArrayList<String>();
            input.add("hello ");
            input.add("world");
    
            Observable.just(input)
                    .map(new Func1<List<String>, String>() {
                        @Override
                        public String call(List<String> input) {
    
                            StringBuffer buffer = new StringBuffer();
    
                            for (String item : input) {
                                buffer.append(item);
                            }
    
                            return buffer.toString();
                        }
                    })
                    .subscribe(new Action1<String>() {
                        @Override
                        public void call(String str) {
                            System.out.println(str);
                        }
                    });
  • 相关阅读:
    12-五子棋游戏:享元模式
    11-制作糖醋排骨:外观模式
    10-蒸馒头:装饰者模式
    09-公司层级结构:组合模式
    08-开关与电灯:桥接模式
    07-电源转换:适配器模式
    将博客搬至CSDN
    iview和element中日期选择器快捷选项的定制控件
    详解AJAX工作原理以及实例讲解(通俗易懂)
    最全肌肉锻炼动图
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5381697.html
Copyright © 2020-2023  润新知