Rxjava 技术总结

本文深入解析RxJava的核心概念,包括Observables和Subscribers的角色与应用,并通过实例展示如何使用RxJava进行数据处理和线程调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rxjava Github 地址:
Rxjava 技术
  • 主要两个核心:Observables(被观察者,事件源)和Subscribers(观察者,订阅者)
  • just () 讲数据一个一个的输出 : 发出事件 new Fun1 函数中 第一个参数: 传入参数, 第二个参数位 返回参数。
  • from : 接受的是一个集合, 可以讲集合中的数据逐一执行操作单元
  • map :是指 just 发出事件与订阅处理事件之间的数据转换
  • subscribe: 订阅处理 (Action1) onnext, (Action1) onerror ,(Action0)oncomplete )
1.Observable和Subscriber可以做任何事情
  • Observable可以是一个数据库查询,Subscriber用来显示查询结果;
  • Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;
  • Observable可以是一个网络请求,Subscriber用来显示请求结果。
  • Observable 相当于一个过程中的入口, Subscriber 相当于一个过程中的出口
2.Observable和Subscriber是独立于中间的变换过程的。
  • 在Observable和Subscriber中间可以增减任何数量的map。
3 Rxjava中的函数、
  • from subscribe: 可以处理集合 循环的执行 订阅的执行单元
  List list = new ArrayList();
        for (int i = 0; i <3 ; i++) {
            list.add("url"+i);
        }
        Observable.from(list).subscribe(new Action1<String>(){
sd
            @Override
            public void call(String s) {
                  System.out.println("call:" +s );
            }
        });

  Log日志:
  call:url0
  call:url1
  call:url2
  • flatMap 函數 返回的是Obserable
   Observable.from(list).flatMap(new Func1<Student, Observable<Course>>() {
            @Override
            public Observable<Course> call(Student student) {
                  System.out.println(" Fun1 Student call:" + student.getName());
                return Observable.from(student.getListSubject());
            }
        }).subscribe(new Action1<Course>() {
            @Override
            public void call(Course course) {

                   System.out.println("Action1  course call: " + course.getSubname());
            }
        });

Log 日誌輸出
     Fun1 Student call:张三
    Action1  course call: 张三课程  00
    Action1  course call: 张三课程  01
    Action1  course call: 张三课程  02
     Fun1 Student call:李四
    Action1  course call: 李四课程  00
    Action1  course call: 李四课程  01
    Action1  course call: 李四课程  02
     Fun1 Student call:王武
    Action1  course call: 王武课程  00
    Action1  course call: 王武课程  01
    Action1  course call: 王武课程  02

  • flatMap 和 map 之间的区别

和 map() 不同的是, flatMap() 中返回的是个 Observable 对象

  • lift 变换
4 线程控制 调度器
  • Schedulers.immediate(): 直接在当前的线程中执行。
  • Schedulers.newThread(): 总是创建新的线程执行。
  • Schedulers.io(): io 文件的处理。
  • AndroidSchedulers.mainThread():在主线程中执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值