首页
学习
活动
专区
圈层
工具
发布

Android SingleLiveEvent Redux with Kotlin Flow

我觉得仍有改进的余地,尤其是在使用Kotlin的coroutines和flow时。在这篇文章中,我将描述我如何处理一次性事件,以及如何在Android生命周期中安全地观察这些事件。...A Safe Emitter of Events 因此,满足第一个要求,很明显,一个流是必要的。...LiveData或任何conflates Kotlin flow,如StateFlow或ConflatedBroadcastChannel,都不合适。...A Safe Observer of Events Android Framework强加给开发者的不同的生命周期可能很难处理。许多操作只能在某些生命周期状态下安全地执行。...minActiveState = Lifecycle.State.RESUMED) { // do things } 原文链接:https://proandroiddev.com/android-singleliveevent-redux-with-kotlin-flow-b755c70bb055

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    了解 Kotlin Flow(一)

    关于 Flow 的知识点有如下一些: Flow 的基本使用 StateFlow 和 SharedFlow 的使用和基本原理 StateFlow、SharedFlow 在 Android 中使用的时候和...LiveData 的比较 基础使用 Kotlin 里 Flow 的基本用法是使用一个 flow 方法创建 Flow 对象: flow {} 需要更新值的时候,在代码块内使用 emit 方法发射值。...检查 Flow 的不可变性。...在日常开发中,普通的 Flow API 只能有一个 collect 的地方,并不能满足我们的需求,所以 Kotlin 还提供了更丰富的 APIStateFlow 和 SharedFlow。...总结 初步认识上面的知识点后,我们可以利用 Flow 来改进之前的 Android 代码: UI 相关的状态我们仍然可以使用 LiveData 或者直接使用 StateFlow ,需要注意的是,状态 是一直存在的

    1.1K10

    解决Android开发中的痛点问题用Kotlin Flow

    前言 本文旨在通过实际业务场景阐述如何使用Kotlin Flow解决Android开发中的痛点问题,进而研究如何优雅地使用Flow以及纠正部分典型的使用误区。...有关Flow的介绍及其操作符用法可以参考:异步流 - Kotlin 语言中文站,本文不做赘述。...基于LiveData+ViewModel的MVVM架构在某些场景下(以横竖屏为典型)存在局限性,本文会顺势介绍适合Android开发的基于Flow/Channel的MVI架构。...Kotlin Flow是基于kotlin协程的一套异步数据流框架,可以用于异步返回多个值。...kotlin 1.4.0正式版发布时推出了StateFlow和SharedFlow,两者拥有Channel的很多特性,可以看作是将Flow推向台前,将Channel雪藏幕后的一手重要操作。

    3.9K20

    Kotlin Flow响应式编程,StateFlow和SharedFlow

    大家好,今天是Kotlin Flow响应式编程三部曲的最后一篇。 其实回想一下我写这个Kotlin Flow三部曲的初衷,主要还是因为我自己想学这方面的知识。...而Kotlin Flow在可预见的时间里,我也上不太可能能在工作当中用得到,所以这个系列也就基本是属于我个人的学习笔记了。...内容和前面的两篇文章有一定的承接关系,所以如果你还没有看过前面两篇文章的话,建议先去参考 Kotlin Flow响应式编程,基础知识入门 和 Kotlin Flow响应式编程,操作符函数进阶 。...Flow的生命周期管理 首先,我们接着在 Kotlin Flow响应式编程,基础知识入门 这篇文章中编写的计时器例子来继续学习。...好了,到这里,Kotlin Flow三部曲全剧终。 虽不敢说通过这三篇文章你就能成为Flow大神了,但是相信这些知识已经足够你解决工作中遇到了绝大多数问题了。

    1.1K10

    实战 | 使用 Kotlin Flow 构建数据流 管道

    Flow 是一种基于流的编程模型,本文我们将向大家介绍响应式编程以及其在 Android 开发中的实践,您将了解到如何将生命周期、旋转及切换到后台等状态绑定到 Flow 中,并且测试它们是否能按照预期执行...△ 单向数据绑定 使用 Flow 可以想象对于这些组合和转换来说,我们需要一个成熟的工具来完成这些操作。在本文中我们将使用 Kotlin Flow 来实现。...delay(refreshIntervalMs) // ⏰ 挂起一段时间 } } } 转换 Flow 在 Android 中,生产者和消费者之间的层可以使用中间运算符修改数据流来适应下一层的要求...在 Android 视图上收集数据流 在 Android 的视图中收集数据流要注意两点,第一是在后台运行时不应浪费资源,第二是配置变更。...val first = repository.messages.take(5).toList() } 回顾 感谢阅读本文,希望您通过本文内容已经了解到为什么响应式架构值得投资,以及如何使用 Kotlin

    2K10

    Kotlin Flow 看这一篇 带你入门~

    为什么需要Flow 首先我们来回顾下Kotlin中我们如何使用挂起函数,我们在main方法中,调用挂起函数返回一组数据,代码如下所示: suspend fun loadData(): List...上面挂起函数的返回类型是List类型,那么就必定只能一次性返回数据,此时,Flow就出场了~ Flow的基础使用 构建器 我们改写loadData方法,返回类型修改为Flow ,并构造一个flow...那么我们如何指定Flow代码块中的上下文呢,我们需要使用flowOn操作符,我们将Flow代码块中的代码指定在IO线程中,代码如下所示: fun loadData1() = flow { for...buffer操作符 我们在Kotlin 协程 看这一篇就够了 中曾了解过,协程可以提升并发请求的效率,而在Flow代码块中,每当有一个处理结果 我们就可以收到,但如果处理结果也是耗时操作,我们来看下需要多长时间来处理...看了这么多,是否对Flow有所基本的了解了呢~ Flow 在 实际项目中的使用 未完待续,敬请期待。

    1.5K30
    领券