美文网首页
Rxjava 认识1

Rxjava 认识1

作者: dev晴天 | 来源:发表于2018-08-13 17:44 被阅读0次

    /*
    * 1 概念: Rxjava 基于观察者的 异步 事件库
    * 2 rx的观察者模式 Observer/Subscripter 观察者,
    * Observable 被观察者
    * subscribe 订阅 (被观察者订阅 观察者 通过调用此函数)
    *
    * 3 对象的创建 :
    *
    * 创建观察者 new 接口Observer 或者Subscripter 两者有差异(新增了几个方法)
    * // 接口中必须实现的三个方法
    * onnext 普通事件 相当于 onClick(按钮接口回调事件中案例)
    * onCom。。。 onnenxt不仅是一个事件 还是个事件队列 ,队列完成后 触发此方法
    * onErr。。。 事件处理异常时触发 (成功失败只能触发一个)
    *
    * 注意 观察者的范型要与被观察者创建时参数类型一致
    * */

    package com.example.zhangbiao.rxjava;
    
    import android.graphics.Bitmap;
    import android.graphics.drawable.Drawable;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.Button;
    import android.widget.ImageView;
    
    import java.io.File;
    
    import rx.Observable;
    import rx.Observer;
    import rx.Subscriber;
    import rx.android.schedulers.AndroidSchedulers;
    import rx.functions.Action1;
    import rx.functions.Func1;
    import rx.schedulers.Schedulers;
    
    public class MainActivity extends AppCompatActivity {
    
        private static final String TAG = "1234";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /*
             * 1  概念: Rxjava  基于观察者的    异步 事件库
             * 2  rx的观察者模式 Observer/Subscripter 观察者,
             * Observable 被观察者
             * subscribe  订阅  (被观察者订阅 观察者  通过调用此函数)
             *
             * 3 对象的创建 :
             *
             * 创建观察者 new 接口Observer  或者Subscripter  两者有差异(新增了几个方法)
             * // 接口中必须实现的三个方法
             * onnext 普通事件 相当于 onClick(按钮接口回调事件中案例)
             * onCom。。。   onnenxt不仅是一个事件 还是个事件队列 ,队列完成后 触发此方法
             * onErr。。。   事件处理异常时触发 (成功失败只能触发一个)
             *
             * 注意 观察者的范型要与被观察者创建时参数类型一致
             *
             * 观察者:他什么时候触发事件 触发什么样的事件由 他的静态方法 create()创建
             * 看其参数 new Observable.OnSubscribe<String>()  OnSubscribe表示在订阅时 也就是下文的
             *  observable.subscribe(subscriber); 时
             *
             * */
    
    
            Subscriber<String> subscriber = new Subscriber<String>() {
                @Override
                public void onStart() {
                    Log.i(TAG, "onStart: " + "初始化工作");
                }
    
                @Override
                public void onCompleted() {
                    Log.i(TAG, "onCompleted: " + "事件完成!");
                }
    
                @Override
                public void onError(Throwable throwable) {
                    Log.i(TAG, "onError: " + "事件异常");
                }
    
                @Override
                public void onNext(String s) {
                    Log.i(TAG, "onNext: 接收到动作" + s);
                }
            };
    
    
            // oncreate是rxjava 最基本创建事件队列的方法  rxjava还提供了快捷创建的方法
            // 1 Observable observable1 = Observable.just("hello","world"); // 将传入的可变参数依次发出来
            // 2 Observable.from(new String[]{"hello","world"}); // 内部将传入的数组或者Iterable 转化为对象输出
            //1 2 的方式与3结果相同
            // 将会依次调用:
            // onNext("Hello");
            // onNext("world");
            // onCompleted();
    
            // 3 基本方式
            Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
                @Override
                public void call(Subscriber<? super String> subscriber) {
                    // 被观察者内部有观察者的 对象subscriber  可以调用观察者的方法
                    // 思路类比 点击事件
    
    
                    // 被观察者发出动作   观察者便可以接收到
                    // 基于事件的调度 类比点击事件 执行一次 观察者内部方法触发一次
                    subscriber.onNext("hello");
                    subscriber.onNext("world");
                }
    
            });
    
            // 被观察者订阅观察者事件(此句话可能有点不易理解 你会感觉反过来说通顺)
            observable.subscribe(subscriber);
    
    
        }
    }
    
    
    log:
    
    08-13 17:41:23.465 5781-5781/com.example.zhangbiao.rxjava I/1234: 
        onStart: 初始化工作
        onNext: 接收到动作hello
        onNext: 接收到动作world
    

    总结: // 被观察者执行步骤 观察者观察接收结果

    相关文章

      网友评论

          本文标题:Rxjava 认识1

          本文链接:https://www.haomeiwen.com/subject/npwubftx.html