rxAndroid学习笔记

Rxjava

在android中使用rx,学习Lambda,结合Retrofit
作用
方便,简洁的使用异步
环境
  1. androidStudio
  2. 在module的bulid.gradle下配置(rx有1.0X和2.0X版本 随意学 本文用2.0)
    • compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’
    • compile ‘io.reactivex.rxjava2:rxjava:2.0.1’
学习的资源
基本概念
  • Observable 被观察者
  • Observer 观察者
    • Subscriber 观察者的抽象类
  • subscribe 订阅
  • event 事件
文档和引用
使用
  1. 简单使用

    1. 创建Observer

          Observer<Integer> observer = new Observer<Integer>() {
          @Override
          public void onSubscribe(Disposable d) {
              Log.d(TAG, "subscribe");
          }
      
          @Override
          public void onNext(Integer value) {
              Log.d(TAG, "" + value);
          }
      
          @Override
          public void onError(Throwable e) {
              Log.d(TAG, "error");
          }
      
          @Override
          public void onComplete() {
              Log.d(TAG, "complete");
          }
      };
    2. 创建Observable

      Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
          @Override
          public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
              emitter.onNext(1);
              emitter.onNext(2);
              emitter.onNext(3);
              emitter.onComplete();
          }
      });
    3. 用Observable订阅Observer
      ruby
      observable.subscribe(observer);

    4. 结果

      image

  2. 使用链式结构

    1.     Observable.create(new ObservableOnSubscribe<Integer>() {
          @Override
          public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
              emitter.onNext(1);
              emitter.onNext(2);
              emitter.onNext(3);
              emitter.onComplete();
          }
      }).subscribe(new Observer<Integer>() {
          @Override
          public void onSubscribe(Disposable d) {
              Log.d(TAG, "subscribe");
          }
      
          @Override
          public void onNext(Integer value) {
              Log.d(TAG, "" + value);
          }
      
          @Override
          public void onError(Throwable e) {
              Log.d(TAG, "error");
          }
      
          @Override
          public void onComplete() {
              Log.d(TAG, "complete");
          }
      })
    2. 这样可能有点难看,如果这时候加上lembda就很简洁

          Observable.create((emitter)->{
              emitter.onNext(1);
              emitter.onNext(2);
              emitter.onNext(3);
              emitter.onComplete();
      }).subscribe(new Observer<Integer>(){...});
      
    3. 牛逼哄哄的方法(更简洁)
      1. just(T…)
        ruby
        Observable.just(1,2,3).subscribe(new Observer<Integer>() {...});
      2. fromArray(T[])
        ruby
        Integer [] integers = {1,2,3};
        Observable.fromArray(integers).subscribe(new Observer<Integer>(){...});
  3. 多线程

    1. subscribeOn(Schedulers.io())
    2. observeOn(AndroidSchedulers.mainThread())
      1. 最常用的就是这2个函数了,分别将Observable运行在oi线程 Observer运行在main线程

    4.取消订阅
    通过Disposable 这个接口来取消订阅
    直接在observer对象中通过disposable.dispose();来取消订阅


        Observer<Long> observer = new Observer<Long>() {
            private Disposable disposable;

            @Override
            public void onSubscribe(Disposable d) {
                Log.d(TAG, "subscribe");
                disposable = d;
            }

            @Override
            public void onError(Throwable e) {
                Log.d(TAG, "error");
            }

            @Override
            public void onNext(Long value) {
                disposable.dispose();
            }
            @Override
            public void onComplete() {
                Log.d(TAG, "complete");
            }
        }
会在使用中慢慢更新这篇blog
demo 地址 https://github.com/zhangdt/RxAndroidDemo
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值