rxjava基础使用

1.组成:
Observable:在观察者模式中称为“被观察者”;
Observer:观察者模式中的“观察者”,可接收Observable发送的数据;
subscribe:订阅,观察者与被观察者,通过subscribe()方法进行订阅;
Subscriber:也是一种观察者,在2.0中 它与Observer没什么实质的区别,不同的是 Subscriber要与Flowable(也是一种被观察者)联合使用,该部分内容是2.0新增的

2.关系:

RxJava 有四个基本概念:Observable (被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在完成某些操作,获得一些结果后,回调触发事件,即发出事件来通知 Observer。

3.使用:

RxJava用法多种多样,其多样性体现在Obserable(被观察者)的创建上。

case R.id.button:
    //基础方式
    Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
        @Override
        public void subscribe(ObservableEmitter<String> e) throws Exception {
            //执行一些其他操作
            //.............
            //执行完毕,触发回调,通知观察者
            e.onNext("我来发射数据");
            e.onComplete();
        }
    });
    observable.subscribe(observer);
    break;
case R.id.button2:
    //just()方式
    //直接发送到next()
    Observable<String> observable1 = Observable.just("Hello");
    observable1.subscribe(observer);
    break;
case R.id.button3:
    //fromIterable()方式
    //发送集合到next()
    List<String> list = new ArrayList<String>();
    for (int i = 0; i < 10; i++) {
        list.add("Hello" + i);
    }
    Observable<String> observable2 = Observable.fromIterable((Iterable<String>) list);
    observable2.subscribe(observer);
    break;
case R.id.button4:
    //defer()方式
    //当观察者订阅时,才创建Observable,并且针对每个观察者创建都是一个新的Observable。
    // 以何种方式创建这个Observable对象,当满足回调条件后,就会进行相应的回调。
    Observable<String> observable3 = Observable.defer(new Callable<ObservableSource<? extends String>>() {
        @Override
        public ObservableSource<? extends String> call() throws Exception {
            return Observable.just("hello");
        }
    });
    observable3.subscribe(observer);
    break;
case R.id.button5:
    //定时发送
    Observable<Long> observable4 = Observable.interval(2, TimeUnit.SECONDS);
    observable4.safeSubscribe(observer1);
    break;
default:
case R.id.button6:
    //timer( )方式
    //延时发送
    Observable<Long> observable5 = Observable.timer(2, TimeUnit.SECONDS);
    observable5.safeSubscribe(observer1);
    break;
observer = new Observer<String>() {
    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    //观察者接收到通知,进行相关操作
    public void onNext(String aLong) {
        System.out.println("我接收到数据了");
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {
        System.out.println("序列结束");
    }
};

observer1 = new Observer<Long>() {
    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    //观察者接收到通知,进行相关操作
    public void onNext(Long aLong) {
        System.out.println("我接收到数据了" + aLong);
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {
        System.out.println("序列结束");
    }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值