Android 学习笔记(5)之RxJava解析1

1,线程调度
Scheduler 有很多实现类  SingleScheduler .IoScheduler....
Schedulers.computation()  用于计算任务,
Schedulers.from(executor) 指定excecutor作为调度器
Schedulers.immediate( ) 当前线程执行
Schedulers.io() IO密集型任务
Schedulers.newThread() 为每个任务新建线程
Schedulers.trampoline( )    当其它排队的任务完成后,在当前线程排队开始执行
AndroidSchedulers.mainThread()    用于Android的UI更新操作

2,subscribeOn/observeOn
subcribeOn多次调用为什么只有第一次生效
observeOn多次调用,每次都会起作用

3,防抖 采用rxbinding2 
  RxView.clicks(mBt)
                .throttleFirst(10, TimeUnit.SECONDS)
  查询过滤   debounce 防抖 .throttle节流
  RxTextView.textChanges(edittext)
                .debounce(1, TimeUnit.SECONDS)
                //跳过第1次请求 因为初始输入框的空字符状态
                .skip(1)
 4,  combineLatest 操作符
用来将多个Observable发射的数据组装起来然后在发射
比如用来登录校验
 Observable.combineLatest(ObservableName, ObservablePassword
                , (phone, password) -> isPhoneValid(phone.toString()) && isPasswordValid    (password.toString()))
                .subscribe(mBtLogin::setEnabled);

interval 操作符可以实现短信发送倒计时效果 
    Observable.interval(1,TimeUnit.SECONDS,AndroidSchedulers.mainThread())
                        .take(60)
flatMap 操作符可以实现数据嵌套转换效果。
.flatMap( o -> wanAndroidApi.getProject())
.flatMap(projectBean -> Observable.fromIterable(projectBean.getData()))
concatMap  和flatMap差不多,只是是按顺序发送。

5,自定义Eventbus
定义 post方法,使用 FlowableProcessor onNext发送数据
定义事件
然后注册。rxBus.toFlowable(CrossActivityEvent.class)
                .subscribe(new Consumer<CrossActivityEvent>() {
                    @Override
                    public void accept(CrossActivityEvent crossActivityEvent) throws Exception {
                        Log.i(TAG, "我是来自TestCrossActivity的event");
                    }
                });
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值