首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

破解 Kotlin 协程(8) - Android 篇

关键词:Kotlin 协程 Android Anko Android 上面使用协程来替代回调或者 RxJava 实际上是一件非常轻松的事儿,我们甚至可以在更大的范围内结合 UI 的生命周期做控制协程的执行状态...2.1 使用 MainScope 协程有一个很天然的特性能刚够支持这一点,那就是作用域。...3.2 协程版 AutoDisposable 当然除了直接使用一个合适的作用域来启动协程之外,我们还有别的办法来确保协程及时被取消。...合理使用调度器 在 Android 上使用协程,更多的就是简化异步逻辑的写法,使用场景更多与 RxJava 类似。...那么使用协程就更要注意这个问题了,因为协程切换线程的方式被 RxJava 更简洁,更透明,本来这是好事情,就怕被滥用。

1.1K31

《Kotlin 反应式编程》使用 RxKotlin 实现一个极简的 http DSL ( Reactive Programming Using Rx Kotlin )《Kotlin 反应式编程》使用

/RxKotlin RxKotlin: RxJava bindings for Kotlin 使用 RxKotlin 实现一个极简的 http DSL ( Reactive Programming Using...我们这里主要用RxKotlin来进行请求回调的异步处理。...Rx 比较流行的库有RxJava/RxJS/Rx.NET等,当然未来RxKotlin也必将更加流行。 提示: Rx 的社区网站是: http://reactivex.io/ 。...这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者,在未来某个时刻响应 sender 的通知,而不需要阻塞等待 sender 发射数据。这个很像协程中的通道编程模型。...如果使用Kotlin来开发项目的话,我们完全可以去尝试一下。

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

    与小清新的距离 你只差一个RxKotlin !

    这种编程习惯带给大家的是掌握一门语言的风格,就可以快速简单的使用另一们语言的魔力,相信这也是未来10年的发展趋势。...RxKotlin RxKotlin是基于kotlin扩展的rx衍生体,对kotlin无需再普及,这种支持Lambdas语法的简洁姿势,会让代码变得小清新和灵活。可能你已经在java8上体验了一番。...RxKotlin使用 1 老样子 先是集成 Maven: io.reactivex.rxjava2 的栗子,发现不管用rxJava, 还是只用retrofit, 通过使用rxkotlin将业务流程变得更加清晰,那么kotlin是否也有他的操作符,当然他也有过滤器,转换器,拆分符和rxjava...写在最后 Rx家族目前最为熟知的是rxjava和rxSwift,前两者在移动平台上开发也不再是什么新鲜事了,那么其他的家族成员是否也会受到大家的热宠呢,让我们拭目以待!

    93810

    第10章 使用 Kotlin 创建 DSL第10章 使用 Kotlin 创建 DSL

    我们会首先介绍什么是DSL , 然后简单介绍 Kotlin DSL 设计中的特性支持,最后给出了一个http ajax请求的DSL 实现的完整案例。...这样,我们 也可以使用 Kotlin来先传统意义上的 HTML 页面了。 Kotlin Web 编程将会更加简单纯净。...根据Martin Fowler和Eric Evans的观点,框架或者程序库的API是否满足内部DSL的关键特征之一就是它是否有一个流畅(fluent)的接口。...Rx 比较流行的库有RxJava/RxJS/Rx.NET等,当然未来RxKotlin也必将更加流行。 提示: Rx 的社区网站是: http://reactivex.io/ 。...这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者,在未来某个时刻响应 sender 的通知,而不需要阻塞等待 sender 发射数据。这个很像协程中的通道编程模型。

    1.3K20

    使用 Kotlin + WebFluxRxJava 2 实现响应式以及尝试正式版本的协程WebFluxRxJava 2Kotlin 1.3 的 Coroutines总结

    在前一篇文章《使用 Kotlin + Spring Boot 进行后端开发》中,曾介绍过尝试使用 Kotlin 来做后端开发。这一次,尝试 WebFlux 以及协程。...() ...... } Kotlin 1.3 的 Coroutines 协程(coroutine)相比于线程更加轻量级,协程又称为微线程。...线程和协程的一个显著区别是,线程的阻塞代价是昂贵的,而协程使用了更简单、代价更小的挂起(suspend)来代替阻塞。...使用 Coroutines 的方式获取登陆信息.png 关于协程,更多可以参考之前写的 Coroutines 笔记: Kotlin Coroutines 笔记 (一)、Kotlin Coroutines...另外,Kotlin 1.3 之后的协程已经是正式版本,Kotlin 在语言级别上支持了协程,它是异步编程的另一个不错的选择。

    1.2K10

    《Kotin 极简教程》第14章 使用 Kotlin DSL第14章 使用 Kotlin DSL《Kotlin极简教程》正式上架:

    第14章 使用 Kotlin DSL 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ ---- 我们在前面的章节中,已经看到了 Kotlin DSL 的强大功能。...Kotlin DSL 的编程风格是怎样的呢?以及其背后实现的原理是怎样的呢?下面就让我一起来探讨一下。...我们完全可以直接使用后端的接口返回数据来给 HTML 元素赋值,我们也完全具备了(当然是完全超越了)诸如 JSP、Freemarker 这样的视图模板引擎的各种判断、循环等的语法功能,因为我们直接使用的是一门强大的编程语言...Rx 比较流行的库有RxJava/RxJS/Rx.NET等,当然未来RxKotlin也必将更加流行。 提示: Rx 的社区网站是: http://reactivex.io/ 。...这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者,在未来某个时刻响应 sender 的通知,而不需要阻塞等待 sender 发射数据。这个很像协程中的通道编程模型。

    2.1K10

    在 Android 开发中使用协程 | 背景介绍

    本文是介绍 Android 协程系列中的第一部分,主要会介绍协程是如何工作的,它们主要解决什么问题。 协程用来解决什么问题?...Kotlin 中的协程提供了一种全新处理并发的方式,您可以在 Android 平台上使用它来简化异步执行的代码。...上述动画展示了 Kotlin 如何使用 suspend 和 resume 来代替回调 观察上图中 fetchDocs 的执行,就能明白** suspend** 是如何工作的。...使用协程保证主线程安全 在 Kotlin 的协程中,主线程调用编写良好的 suspend 函数通常是安全的。不管那些 suspend 函数是做什么的,它们都应该允许任何线程调用它们。...Kotlin 提供了三个调度器,您可以使用它们来指定应在何处运行协程: 如果您在 Room 中使用了 suspend 函数、RxJava 或者 LiveData,Room 会自动保障主线程安全。

    1.6K30

    即学即用Kotlin - 协程

    概念 相信大家或多或少的都了解过,协程是什么,官网上这么说: “Essentially, coroutines are light-weight threads. 协程是轻量级的线程,为什么是轻量的?...协程作用域 协程的作用域有三种,他们分别是: runBlocking:顶层函数,它和 coroutineScope 不一样,它会阻塞当前线程来等待,所以这个方法在业务中并不适用 。...那我们什么时候需要使用挂起函数呢?常见的场景有: 耗时操作:使用 withContext 切换到指定的 IO 线程去进行网络或者数据库请求。 等待操作:使用delay方法去等待某个事件。...除了简单的用法外,这里有两个问题得注意一下: collect 函数是一个 suspend 方法,所以它必须发生在协程或者带有 suspend 的方法里面,这也是我为什么在一开始的时候启动了 lifecycleScope.launch...改变数据发射的线程 flowOn 使用的参数是协程对应的调度器,它实质改变的是协程对应的线程。

    1.5K20

    Google 推荐在 MVVM 架构中使用 Kotlin Flow

    项目也在逐渐切换到 Flow,为什么 Google 会推荐使用它呢,使用 Flow 能带来那些好处呢,为我们解决了什么问题 Kotlin Flow 是什么?...,造成内存泄露是很正常的事,大家可以从 StackOverflow 上查看一下,有很多因为 RxJava 造成内存泄露的例子 RxJava 入门的门槛很高,学习过的朋友们,我相信能够体会到从入门到放弃是什么感觉...是对 Kotlin 协程的扩展,让我们可以像运行同步代码一样运行异步代码,使得代码更加简洁,提高了代码的可读性 易于做单元测试 Kotlin Flow 如何在 MVVM 中使用 Jetpack 的视图模型...接下来我们一起来探究一下 Kotlin Flow 在 MVVM 当中每层是如何实现的。...Flow 是协程的扩展,如果要在 Room 和 Retrofit 中使用,Room 和 Retrofit 需要支持协程才可以,在 Retrofit >= 2.6.0 和 Room >= 2.1 版本都支持协程

    4.4K21

    Android实现异步的几种方式——从简单的图片加载说起

    使用subscribeOn和observeOn进行线程切换。 使用RxJava的好处是很轻松得实现线程切换,还可以指定线程,有异常捕获机制。...但对于不熟悉RxJava的朋友来说会有些… Kotlin协程 最后要安利一个非常酷炫的方式,那就是Kotlin协程。...越来越多的公司和项目开始使用Kotlin编码,毕竟Kotlin得到了谷歌爸爸的支持,而且Kotlin的优秀语言特性,使得它受到开发者的广泛欢迎。 今天介绍Kotlin的一个概念,叫做协程。...协程是由程序直接实现的,是一种轻量级线程,kotlin也为此提供了标准库和额外的实验库。...小结 从个人感觉来说,我比较推荐使用RxJava和协程来实现,处理周密的话,轻松避免资源浪费和内存泄漏。

    1.6K61

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

    背景 大力智能客户端团队在平板端大力一起学App上深度适配了横竖屏场景,将原先基于Rxjava的MVP架构重构成基于LiveData+ViewModel+Kotlin协程的MVVM架构。...LiveData的粘性机制会带来副作用,但这本身并不是LiveData的设计缺陷,而是对它的过度使用。 Kotlin Flow是基于kotlin协程的一套异步数据流框架,可以用于异步返回多个值。...需要手动添加lifecycleObserver来保证线程的挂起和恢复,并且不支持协程。考虑使用kotlin协程中的Channel替代。...MVI有哪些好处 解决了上文的两个痛点。...使用Flow还能给我们带来什么 比Rxjava更简单,比LiveData更多的操作符 如使用flowOn操作符切换协程上下文、使用buffer、conflate操作符处理背压、使用debounce操作符实现防抖

    3.3K20

    XTask与Kotlin Coroutine的使用对比

    背景 XTask是我基于RxJava的设计思想,并结合实际项目中使用的经验所创造出来的一个开源项目,其目的就是要代替RxJava在Android中的部分使用场景,提升开发的体验和可维护性。...前段时间写过一篇《XTask与RxJava的使用对比》文章,本来只是从对比这两者使用的不同,来让大家更直观全面地了解XTask,然而有些杠精们就开始在下面评论或者私信说“用Kotlin的协程它不香嘛”、...“和kotlin的协程相比如何”等。...首先我想说的是,协程并没某些人吹得那么神乎其神,说到底它就是个应用框架而已,主要解决的就是在开发过程中的异步执行问题,这点它和RxJava是类似的;其次,协程并不是kotlin最先提出的,协程概念的提出最早可追溯至...消除了并发任务之间的协作的难度,协程可以让我们轻松地写出复杂的并发代码。从这一点来看,Kotlin Coroutine无疑是非常优秀的,因为它可以大大降低异步程序的设计复杂度。

    93140

    Kotlin 协程真的比 Java 线程更高效吗?

    例如我们在IDEA中新建Kotlin工程的时候。 可以看出来,这里是有选项的,上述的验证,我们只验证了 Kotlin-JVM 是不支持协程的。那么有没有一种Kotlin-x 的东西是支持协程的呢?...让我们更方便的使用Java中的线程才是Kotlin-JVM中的协程的真正目的。 本质上和Handler,AsyncTask,RxJava 基本是一致的。只不过Kotlin中的协程比他们更方便一些。...这一点上Kotlin 协程的作用和RxJava其实是一致的,只不过Kotlin做的更彻底,比RxJava更优雅更方便更简洁。...比较好的实现方式是用RxJava的zip操作符来做,在有了Kotlin以后,如果利用Kotlin,这段代码甚至会比zip操作符还要简单。...Kotlin-JVM中的协程最大的价值是写起来比RxJava的线程切换还要方便。几乎就是用阻塞的写法来完成非阻塞的任务。

    2.1K20

    RxHttp ,比Retrofit 更优雅的协程体验

    1、前言 ==== 一直有人问我,RxHttp跟Retrofit相比有什么优势?在这,我想通过稳定性、功能性、易用性几个方面来谈谈我的想法。...2、RxHttp 协程使用 ============= 2.1、请求三部曲 用过RxHttp的同学知道,RxHttp发送任意请求皆遵循请求三部曲,如下: [1.jpg] 代码表示 //Kotlin 协程...3、上传/下载 ======= RxHttp对文件的优雅操作是与生俱来的,在协程的环境下,依然如此,没有什么比代码更具有说服力,直接上代码 3.1、文件上传 val result = RxHttp.postForm...串行请求中,只要其中一个请求出现异常,协程便会关闭(同时也会关闭请求),停止执行剩下的代码,接着走异常回调 5.2、协程并行多个请求 请求并行,在现实开发中,也是家常便饭,在一个Activity中,我们往往需要拿到多种数据来展示给用户...,内部的asClass/toClss方法,就是通过它去实现的;第二第三是下载文件时用的的解析器,区别前者是结合RxJava下载的,后者是结合协程下载的;最后一个是解析Bitmap对象用的,asBitmap

    2.2K20

    破解 Kotlin 协程(3) - 协程调度篇

    关键词:Kotlin 异步编程 协程 上一篇我们知道了协程启动的几种模式,也通过示例认识了 launch 启动协程的使用方法,本文将延续这些内容从调度的角度来进一步为大家揭示协程的奥义。 ? 1....前面我们提到 launch 函数有三个参数,第一个参数叫 上下文,它的接口类型是 CoroutineContext,通常我们见到的上下文的类型是 CombinedContext 或者 EmptyCoroutineContext...对比前面的 RxJava 的做法,你会发现这段代码其实很容易理解,你甚至会发现协程的使用场景与 RxJava 竟是如此的相似。...如果大家在协程代码中使用锁之类的并发工具就反而增加了代码的复杂度,对此我的建议是大家在编写协程代码时尽量避免对外部作用域的可变变量进行引用,尽量使用参数传递而非对全局变量进行引用。...上一篇文章我们提到了 suspend main 会启动一个协程,我们示例中的协程都是它的子协程,可是这个最外层的协程到底是怎么来的呢?

    76820

    我去你的 Kotlin 协程

    网络请求这个就不用说了,RxJava 配合 Retrofit 来做网络请求,各种复杂操作和线程切换,谁用谁知道——现在用协程就可以了,比 RxJava 方便;而 event bus,当时比较火的是两个开源库...是完全可以的,没有任何问题。那 Android 官方为什么要做一个 LiveData 出来,而不是直接推荐大家去用 RxJava 来实现这样的功能?...我要说的是 Kotlin,Kotlin 在 2017 得到了 Android 官方的公开支持,在接下来这几年里,Kotlin 自身越来越完善,它的协程也越来越完善。...协程的 Flow 和 RxJava 的功能范围非常相似——其实我觉得就是一样的——但是 Flow 是协程里必不可少的一部分,而协程是 Kotlin 里必不可少的一部分,而 Kotlin 是 Android...开发里必不可少的一部分——哦这个说的不对,重新说——而 Kotlin 又是 Android 现在主推的开发语言以及未来的趋势,这样的话,Flow 一出来,那就没 LiveData 什么事了。

    95750

    快速进阶 Kotlin Flow:掌握异步开发技巧

    本文将深入探讨 Kotlin Flow 的使用方法,同时也会解析其背后的实现原理,帮助你更好地理解这一技术。 什么是 Kotlin Flow?...Kotlin Flow 集成了 Kotlin 协程的取消机制,使得取消操作变得简单而高效。 使用协程作用域 在 Flow 中进行取消操作时,建议使用协程作用域来确保操作的一致性。...协程集成 Kotlin Flow 是 Kotlin 协程的一部分,因此它天生与 Kotlin 协程无缝集成。这意味着你可以在同一个代码块中使用协程和 Flow,实现更加一致和清晰的异步编程。...以下是一些适用场景的示例: Kotlin Flow 适用场景: 如果你已经在项目中广泛使用了 Kotlin 协程,那么使用 Kotlin Flow 可以更加一致地集成异步处理。...RxJava 适用场景: 如果你已经在项目中广泛使用了 RxJava,或对 RxJava 有深入的了解,继续使用它可能更加方便。

    1.3K30

    【Kotlin】协程(一)——入门

    介绍 这里一开始不打算介绍什么是协程,虽然标题叫介绍~~ 为了方便理解,这边先做个比喻: 从使用的角度来看,Kotlin的协程像是“另一种RxJava”,但是比RxJava要高效。...于是我决定一开始先不说什么是协程。 作用 上面说到,协程用起来“像是另一种RxJava”。 那么是不是可以用协程来开启一个异步操作?切换线程? 答案是肯定的,不仅可以做到,而且写起来也很简单。...使用 知道到了他的优(niu)秀(bi)之处,下面来看看是怎么用的 因为是Kotlin的协程,所以项目需要支持Kotlin。怎么支持就不用我说了吧? (不要问我,我不会,因为那是另一个同事做的。...这里用measureTimeMillis()来计算代码耗时。 总结 协程基本的使用到这里就可以告一段落了,主要介绍了协程给我带来了什么,可以在什么场景下用,怎么用。...相信这样同步的方式来写异步,这样写出来的代码一定是非常直观、清晰的。 然而,有关什么是协程?有哪些详细的用法和细节?进程、线程和协程又有什么关系?留着后面再说。

    1.4K20
    领券