【深入理解Kotlin协程】Google的工程师们是这样理解Flow的?

Question:why there is a Flow in kotlin?

问这个问题就好比在问为什么那里会有一座山存在,嗯,这貌似是一个哲学问题。当然,对于kotlin中的Flow的理解可能不会上升到这么高的哲学层次,对于Flow相关的Api掌握并使用它并不是什么难事,但是我们需要思考的是为什么会有Flow这样的存在?

其实flow的背后是协程,那么kotlin中的协程框架已经能够做到异步任务问题的解决方案了,为什么还要设计Flow呢?设计这个玩意的最初的目的和构想是为了什么样的意图?

为了搞明白这个问题的真相,我特意通过科学上网的方式,了解了一下Google的Android工程师们对Flow的理解。下面主要是记录一下理解产生Flow这个想法的过程。

注意看,下面这个男人叫小帅,他每天的一项任务就是提着水桶到湖边去取水。

在这里插入图片描述

小帅一年365天都在重复着这样的内容,可是不出意外的话,意外终于发生了,有一天小帅来到湖边后发现湖泊居然干了,于是他不得不尝试跑去寻找其他新的水源。

在这里插入图片描述
但是聪明的小帅很快就发现了问题,他在想:与其这样到不同的湖边跑来跑去,为什么不能在湖边架设一根管道,然后让水流沿着管道自动流过来呢?就像下面这样:

这样即使有多个湖泊也可以通过管道将它们连接起来:

这样以后小帅就不必每次亲自跑到湖边去检查湖泊有没有干,只要湖泊没有干,那么小帅在管道的另一头只需要拧开水龙头,就会自动有水流出。

现在回想一下在一个应用当中,其实我们请求应用界面所需的数据跟这个场景很相似,不是吗,想象一下,我们平时是不是在到处请求数据,然后拿到数据以后再返回到使用它的地方去更新View界面?就像下面这样:

我们就跟小帅一样,不停的在应用的各个地方去请求数据,拿到数据后再返回到UI界面去更新,而且这样的地方非常的多,因此我们总是为此而疲于奔命,有时甚至感到分身乏术。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kotlin程是一种轻量级的线程处理机制,它可以在不创建新线程的情况下实现异步操作。Kotlin程的优势在于它提供了一种结构化并发的方式,使得异步代码更加易于编写和维护。下面是深入理解Kotlin程的一些方法和步骤: 1. 程的基本概念:程是一种轻量级的线程处理机制,它可以在不创建新线程的情况下实现异步操作。程的本质是一种作式的多任务处理机制,它可以在同一个线程中切换执行不同的任务,从而实现异步操作。 2. 程的使用方法:在Kotlin中,程的使用方法非常简单。首先需要导入kotlinx.coroutines库,然后使用launch函数创建一个程。在程中可以使用挂起函数来实现异步操作,例如delay函数可以让程暂停一段时间。 3. 程的挂起函数:程的挂起函数是一种特殊的函数,它可以让程暂停执行,等待某个条件满足后再继续执行。在Kotlin中,常用的挂起函数包括delay函数、withContext函数和async函数等。 4. 程的上下文:程的上下文是一种特殊的对象,它包含了程的执行环境和状态信息。在Kotlin中,程的上下文可以通过CoroutineContext对象来表示,它包含了程的调度器、异常处理器和其他一些属性。 5. 程的异常处理:程的异常处理是一种特殊的机制,它可以让程在发生异常时自动恢复或者终止执行。在Kotlin中,程的异常处理可以通过try-catch语句或者CoroutineExceptionHandler对象来实现。 6. 程的取消:程的取消是一种特殊的机制,它可以让程在不需要继续执行时自动终止。在Kotlin中,程的取消可以通过cancel函数或者程作用域来实现。 下面是一个使用Kotlin程实现异步操作的例子: ```kotlin import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { delay(1000L) println("World!") } println("Hello,") job.join() } ``` 输出结果为: ``` Hello, World! ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

川峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值