zoukankan      html  css  js  c++  java
  • 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);
                        }
                    });
  • 相关阅读:
    进程与线程的介绍
    内存结构篇:直接内存
    内存结构篇:方法区
    内存结构篇:堆
    内存结构篇:本地方法栈
    内存结构篇:虚拟机栈
    内存结构篇:程序计数器
    Error: Rule can only have one resource source (provided resource and test + include + exclude) in {
    iview-admin(cli3 + webpack4 )解决兼容ie9+ 方案
    日期插件 js
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5381697.html
Copyright © 2011-2022 走看看