草庐IT

[Kotlin Tutorials 19] Kotlin Flows, SharedFlow and StateFlow in Android

KotlinFlows本文包含的内容:Flow是什么,基本概念和用法.Flow的不同类型,StateFlow和SharedFlow比较.Flow在Android中的使用安全收集.操作符stateIn,shareIn的用法和区别.本文被收录在集合中:https://github.com/mengdd/KotlinTutorialsCoroutinesFlowBasicsFlow是什么Flow可以按顺序发送多个值,概念上是一个数据流,发射的值必须是同一个类型.Flow使用suspend方法来生产/消费值,数据流可以做异步计算.几个基本知识点:创建flow:通过flowbuildersFlow数据流

SAP MM 采购订单的Document Flow

SAPMM 采购订单的DocumentFlow 一直以来,笔者一直都是记得SAP SD模块中的销售订单以及交货单等单据有凭证流(DocumentFlow)。事实上,SAP MM模块中的采购订单,也是有documentflow功能的。 在事务代码ME23N界面里,在itemoverview界面下方有一个按钮 ,如下图示,     点击它就可以显示采购订单的凭证流,    在这里以树状结构显示该采购订单对应的发票,交货单(以及后续拣配的WMTO单据号,HU号码),交货单发货产生的物料凭证号,billing号码,billing对应的财务凭证号,以及内向交货单,内向交货收货后的物料凭证号等内容。  它

SAP MM 采购订单的Document Flow

SAPMM 采购订单的DocumentFlow 一直以来,笔者一直都是记得SAP SD模块中的销售订单以及交货单等单据有凭证流(DocumentFlow)。事实上,SAP MM模块中的采购订单,也是有documentflow功能的。 在事务代码ME23N界面里,在itemoverview界面下方有一个按钮 ,如下图示,     点击它就可以显示采购订单的凭证流,    在这里以树状结构显示该采购订单对应的发票,交货单(以及后续拣配的WMTO单据号,HU号码),交货单发货产生的物料凭证号,billing号码,billing对应的财务凭证号,以及内向交货单,内向交货收货后的物料凭证号等内容。  它

Flow 的理解与运用

KotlinFlow可以用于替换Rxjava,也可以用于替换LiveData,功能十分强大,它是Kotlin协程库提供的一部分功能,因此,如果我们项目中已经引用了Kotlin协程,则不需要额外引入Flow相关的依赖。在协程中,挂起函数最多仅能返回一个值,而数据流Flow可按顺序发出多个值,例如,我们可以通过数据流从数据库中实时接收更新。数据流使用挂起函数通过异步方式生成和使用值,也就是说,数据流可安全地发出网络请求以生成下一个值,而不会阻塞主线程。数据流Flow包含三个重要角色:数据提供方:生成数据,并添加到数据流中中介(可选):可修改发送到数据流的值,或修正数据流本身数据使用方:使用数据流中

Flow 的理解与运用

KotlinFlow可以用于替换Rxjava,也可以用于替换LiveData,功能十分强大,它是Kotlin协程库提供的一部分功能,因此,如果我们项目中已经引用了Kotlin协程,则不需要额外引入Flow相关的依赖。在协程中,挂起函数最多仅能返回一个值,而数据流Flow可按顺序发出多个值,例如,我们可以通过数据流从数据库中实时接收更新。数据流使用挂起函数通过异步方式生成和使用值,也就是说,数据流可安全地发出网络请求以生成下一个值,而不会阻塞主线程。数据流Flow包含三个重要角色:数据提供方:生成数据,并添加到数据流中中介(可选):可修改发送到数据流的值,或修正数据流本身数据使用方:使用数据流中

Android 上的 Kotlin Flow(数据流), 由浅入深

在协程中,Flow是一种可以顺序发出多个值的类型,而不是只返回单个值的挂起函数。例如,你可以使用Flow从数据库接收实时更新。数据流建立在协程之上,可以提供多个值。Flow在概念上是可以异步计算的数据流。发出的值必须是同一类型。例如,Flow是一个发出整数值的流。数据流与生成一组序列值的Iterator非常相似,但它使用挂起函数来异步生成和使用值。这意味着,例如,Flow可以安全地发出网络请求以生成下一个值,而不会阻塞主线程。数据流涉及三个实体:提供方会生成添加到数据流中的数据。得益于协程,数据流还可以异步生成数据。(可选)中介可以修改发送到数据流的值,或修正数据流本身。使用方则使用数据流中的

Android 上的 Kotlin Flow(数据流), 由浅入深

在协程中,Flow是一种可以顺序发出多个值的类型,而不是只返回单个值的挂起函数。例如,你可以使用Flow从数据库接收实时更新。数据流建立在协程之上,可以提供多个值。Flow在概念上是可以异步计算的数据流。发出的值必须是同一类型。例如,Flow是一个发出整数值的流。数据流与生成一组序列值的Iterator非常相似,但它使用挂起函数来异步生成和使用值。这意味着,例如,Flow可以安全地发出网络请求以生成下一个值,而不会阻塞主线程。数据流涉及三个实体:提供方会生成添加到数据流中的数据。得益于协程,数据流还可以异步生成数据。(可选)中介可以修改发送到数据流的值,或修正数据流本身。使用方则使用数据流中的

关于Android 架构 的MVI 初级体

引子Android应用程序寿命与其扩展的灵活性有关,因为它需要一个坚实的基础,这就是为什么对于每个项目来说,最重要的步骤是创建应用程序架构,在与技术团队就定义系统中包含的元素、每个元素的功能以及它们将如何相互通信进行长时间的讨论后,我们必须对整体架构进行清晰的设计。Android应用程序有不同的架构,与我去年的经验不同,MVVM和MVI架构是用于大型应用程序的最常见架构,即使每个应用程序都没有一种实现方式,这取决于其应用程序需求,以及处理它的开发人员风格,因为我相信,独立于Android框架,每个开发人员都有他们独特的软件开发经验,他们带来的不仅仅是他们的知识,还有他们独特的思维方式、解决问题

关于Android 架构 的MVI 初级体

引子Android应用程序寿命与其扩展的灵活性有关,因为它需要一个坚实的基础,这就是为什么对于每个项目来说,最重要的步骤是创建应用程序架构,在与技术团队就定义系统中包含的元素、每个元素的功能以及它们将如何相互通信进行长时间的讨论后,我们必须对整体架构进行清晰的设计。Android应用程序有不同的架构,与我去年的经验不同,MVVM和MVI架构是用于大型应用程序的最常见架构,即使每个应用程序都没有一种实现方式,这取决于其应用程序需求,以及处理它的开发人员风格,因为我相信,独立于Android框架,每个开发人员都有他们独特的软件开发经验,他们带来的不仅仅是他们的知识,还有他们独特的思维方式、解决问题

Flow 了解一下

为什么引入Flow?Flow是介于LiveData与RxJava之间的一个解决方案,它有以下特点:Flow支持线程切换、背压;简单的数据转换与操作符;冷数据流,不消费则不生产数据,这一点与LiveData不同,LiveData的发送端并不依赖于接收端;属于kotlin协程的一部分,可以很好的与协程基础设施结合。Flow是冷流,什么是冷流?只有订阅者订阅时,才开始发射数据流。并且冷流和订阅者只能是一对一的关系,当有多个不同的订阅者时,消息是重新完整发送的。也就是说对冷流而言,有多个订阅者的时候,他们各自的事件是独立的。热流:无论有没有订阅者订阅,事件始终都会发生。当热流有多个订阅者时,热流与订阅