download:2周刷完100道前端优质面试真题
Jetpack架构演化(一):初步运用flow,附加经典案例
在jetpack体系中 livedata的角色纯地道粹是个桥接器,DataSource中获取到数据,然后由viewmodel中止逻辑处置,最后被livedata.postValue到view层,独一的价值是绑定了lifecycle, 只在页面生动(start)的时分接受数据
官方的一篇引见可以参考:从 LiveData 迁移到 Kotlin 数据流 - 掘金
关于初学者来说运用lieveData的好处是足够简单和相对安全
引入flow主要由于以下几点:
具有更友好的API,学习本钱较低
跟Kotlin协程、LiveData别离更紧密,Flow能够转换成LiveData,在ViewModel中直接运用
别离协程的作用域,当协程被取消时,Flow也会被取消,避免内存透露
flow库附属于kotlin, livedata属于Android, 拜托Android平台的限制关于未来跨平台展开有利
【flow是个冷数据流】
所谓冷流,即下游无消费行为时,上游不会产生数据,只需下游开端消费,上游才开端产生数据。
而所谓热流,即无论下游能否有消费行为,上游都会自己产生数据。
下边经过一个经典场景细致描画下flow(单纯的flow,而stateFlow会在后续章节中讲解)的运用
案例:一个菜谱应用app中,我想在一个页面展示一个列表(recyclerview) ,此列表的每个item是个子列表,子列表依次为
计划菜谱列表;
收藏菜谱列表;
根据食材选择的菜谱列表;