与rxJava的偶遇

本人,小猿一枚,最近玩了下rxjava,颇有感慨,有一种相见恨晚的感觉,于是做了如下总结,介绍给各位大婶。

rxjava 很类似asynctask的编码风格,但是比asynctask更灵活。
rxjava可以理解为 订阅和被订阅的事件模型,订阅和被订阅者可以连在一起写,也可以分开写,连在一起的 就不写了,网上很多。这里贴下分开写的。

/**
     * 重新延迟读卡Observable
     */
    private Observable observableReadCard = Observable.create(new Observable.OnSubscribe<Integer>() {
        @Override
        public void call(Subscriber<? super Integer> subscriber) {
            IMateManager.getInstance(mContext).peripheralcancel();
            subscriber.onNext(readType);
        }
    });

/**
     * 重新延迟读卡observer
     */
    private Observer observerReadCard = new Observer<Integer>() {
        @Override
        public void onCompleted() {
        }

        @Override
        public void onError(Throwable e) {
        }

        @Override
        public void onNext(Integer type) {
            if (type == READ_CT_CARD) {
                reInitCTCard();
            } else {
                reInitCard();
            }
        }
    };


    /**
     * 重新读卡
     *
     * @param type 刷卡类型
     */
    public void reReadCard(int type) {
        readType = type;

        observableReadCard.delay(1, TimeUnit.SECONDS)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(observerReadCard);

    }

我先介绍下我的功能,是重新刷磁条银行卡和芯片银行卡的功能,在observerReadCard中做了一下事件分发。首先是observableReadCard 中对程序中刷银行卡资源的释放,然后在observerReadCard 中重新读卡操作。

reReadCard方法 是把observerReadCard和observableReadCard 订阅在一起。
精华部分:
observableReadCard.delay(1, TimeUnit.SECONDS) 延迟订阅1s,
subscribeOn(Schedulers.io()) 让observable发生在io线程。
observeOn(AndroidSchedulers.mainThread()) 让observerReadCard发生在主线程。

到此,可以看出rxjava对线程的操作和事件的时间处理上是很方便的,其中请求网络,更新UI就可以用这套模式,请求放在observerable中,设置在子线程中,更新放在observer中,设置在主线程中。
只需要再封装下,就更破费了。rxjava还有很多的用法,后面再介绍吧,本文到此结束。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值