Flow 和 RxJava 对比

525 阅读1分钟

Flow 和 RxJava 对比

二者都是基于响应式编程理念,一种面向数据流和变化传播的声明式编程。
响应式编程见仁见智了,某种程度上能够让代码更优雅,但是我个人还是更喜欢协程的结构化并发理念。

Flow和RxJava相同点

1.Stream Api概念
2.强大操作符
3.优化异步回调,切换线程方便
4.默认冷流,仅订阅/收集的时候才发送数据

Flow和RxJava不同点:

1.RxJava相对臃肿,Flow是使用kotlin提供的suspend基建来实现异步,RxJava必须声明数据类型实现异步。
  如Observable,Observer
2.Flow collect基于协程,这是缺点,也是优点,如果项目整体使用协程,会很方便。
  比如:
  flowOf("1", "2")
       .map { query(it) }
       .onEach { println(it) }
       .launchIn(lifecycleScope)
3.Flow上下文保证,使用lifeCycleScop执行的collect能够保证一定在主线程;
    而异步返回的Observable,不确定是否切过线程。

总结

kotlin项目拥抱Flow