Kotlin Flow
文章平均质量分 93
Kotlin Flow相关文章
fundroid
Android GDE(谷歌开发者专家)| 互联网大厂移动端架构师
展开
-
终于懂了~ 图解 SharedFlow 缓存系统
图解 MutableSharedFlow 的 replay ,extraBufferCapacity,onBufferOverflow 等参数,深入理解 SharedFlow 的缓存系统原创 2022-10-07 10:00:00 · 2333 阅读 · 0 评论 -
Jetpack MVVM 七宗罪之五: 在 Repository 中使用 LiveData
由于 LiveData 简单好用再加上官网早期的推荐,很多人会将 LiveData 用在 Domain 甚至 Data 层等非 UI 场景,这样的用法并不合理,也已经不再被官方推荐。原创 2022-01-04 11:52:51 · 3190 阅读 · 4 评论 -
Jetpack MVVM 七宗罪之四: 使用 LiveData/StateFlow 发送 Events
久违的 “ Jetpack MVVM 七宗罪 ” 系列,今日再开。本系列主要盘点 MVVM 架构中各种常见错误写法,并针对性的给出最佳实践,帮助大家掌握 Jetpack 组件最正确的使用姿势。Jetpack MVVM 七宗罪之一: 拿 Fragment 当 LifecycleOwnerJetpack MVVM 七宗罪之二: 在 launchWhenX 中启动协程Jetpack MVVM 七宗罪之三: 在 onViewCreated 中加载数据前言在 MVVM 架构中,我们通常使用 Liv.原创 2021-12-27 00:32:39 · 2207 阅读 · 0 评论 -
Jetpack MVVM 七宗罪之二:在 launchWhenX 中启动协程
首先承认这个系列有点标题党,Jetpack 的 MVVM 本身没有错,错在开发者的某些使用不当。本系列将分享那些 AAC 中常见的错误用法,以帮助大家打造更健康的应用架构Flow vs LiveData自 StateFlow/ SharedFlow 出现后, 官方开始推荐在 MVVM 中使用 Flow 替换 LiveData。Flow 基于协程实现,具有丰富的操作符,通过这些操作符可以实现线程切换、处理流式数据,相比 LiveData 功能更加强大。 但唯有一点不足,无法像 LiveData ..原创 2021-08-06 00:38:17 · 1891 阅读 · 0 评论 -
【Android Jetpack】Paging3使用方法介绍
Jetpack Paging提供了列表中分页数据加载的解决方案,已经被广泛熟知和使用,目前这个库升级到了3.0版本。Paging3 基于Kotlin协程进行了重写,兼容Flow、Rxjava、LiveData等多种API方式。本文,我们将基于一个api请求的Sample,学习一下Paging3的使用。我们使用https://reqres.in/提供的mock接口:request:https://reqres.in/api/users?page=1response:Sample代码结构如下..原创 2020-10-31 15:54:15 · 2928 阅读 · 4 评论 -
【Android Jetpack】使用DataStore替换SharedPreferences实现数据持久化
DataStoreDataStore是Jetpack近期新推出的组件,可以以下处理两种类型的数据持久化:DataStore TypeDescriptionPreferences DataStore像SharedPreferences一样,以键值对的形式进行基本类型的数据存储。DataStore 基于 Flow 实现异步存储,避免因为阻塞主线程带来的ANR问题Proto DataStore基于Protobuf实现任意自定义类型的数据存储,需要定义Protobuf的IDL,.原创 2020-10-31 01:41:43 · 3113 阅读 · 0 评论 -
【Android】FlowBinding: 使用Coroutine Flow打造响应式UI
RxBinding如今的Android开发中越来越多地开始引进MVI、Redux、单向数据流等概念,力求实现像react等前端框架那样的响应式UI开发体验。除了彻底转向Jetpack Compose那样的激进方案外,客户端也有一些因地制宜的方案,比如RxBinding,通过RxJava与Android View的配合,用Observable替代OnClickListener,从而更高效地实现基于事件驱动的UI开发。findViewById<Button>(R.id.button).cl.原创 2020-10-02 14:33:26 · 800 阅读 · 0 评论 -
线程调度哪家强?RxJava与Flow的多线程编程
Flow是Coroutine版的RxJava(准确的是RxJava的Observable,因为Flow是冷流),Flow与RxJava都可以方便的进行线程切换,在各种多线程场景中有很多相似点和不同点,本文将针对这些异同进行一个简单介绍RxJava我们先来回顾一下RxJava中的线程切换如上,RxJava使用subscriberOn与observeOn进行线程切换subscribeOnsubscribeOn用来决定订阅时的线程,使用中有两点注意:当调用链上只有一个subscribeOn时.原创 2020-05-20 21:49:20 · 1104 阅读 · 0 评论 -
Kotlin Flow与ChannelFlow
通过Kotlin的Flow可以轻松实现生产者消费者模型。Flow默认是Cold的,生产者和消费者的通信是同步非阻塞的,也就是生产和消费会顺序交替进行suspend fun productor() = flow<Int> { for (i in 1..10) { delay(100) emit(i) ...原创 2020-01-29 12:57:50 · 4824 阅读 · 0 评论 -
Kotlin Flow(一)基本使用
Kotlin协程中使用挂起函数(Suspend函数)可以异步地返回单个计算结果,但是如果有多个计算结果希望通过协程的方式异步返回,这时可以使用Flows(基于kotlin v. 1.3.61)。返回多个值的方式使用Collections一般我们可以使用集合类存储多个值,例如foo()返回一个list,包含3各成员,可以通过foreach对其遍历并打印结果fun foo(): ...翻译 2020-01-29 01:51:08 · 17989 阅读 · 0 评论