val result = get("developer.android.com") // Dispatchers.Main show(result) } // look at this in the next section suspend fun get(url: String) = withContext(Dispatchers.IO){/*...*/} 这段代码不会阻塞主线程吗?它如何在get不等待网络请求和阻塞的情况下返回结果?事实证明,协程为 Kotlin 提供...
里面会有一些实际的工程例子(Use Kotlin Coroutines in your Android App)。 这些官方的工程例程都一直在更新,不用担心技术陈旧学了就被淘汰。 这个例子是让你把一个原来使用JavaExecutors线程池实现的网路请求,并用回调函数的方式更新数据,改造成使用Kotlin协程的方式来实现。 该例程代码量不多,但是涉及的知识面还...
这里只是个抛砖引玉,在我们决定要开始使用 Kotlin 来替换 Java 的时候,最好能先打牢 Kotlin 基础,这样我们才能发挥这门语言的最大潜力。从而避免使用 Kotlin 写出 Java 风格的代码。 2.2 代码角色划分 如果把当前的代码按职责进行划分,大概有以下几种:数据类(data class,类似于 Java Bean)、工具函数(例如格式化...
Activity/Fragment & Coroutines 在Android中, 可以把一个屏幕(Activity/Fragment)和一个CoroutineScope关联, 这样在Activity或Fragment生命周期结束的时候, 可以取消这个scope下的所有协程, 好避免协程泄漏. 利用CoroutineScope来做这件事有两种方法: 创建一个CoroutineScope对象和activity的生命周期绑定, 或者让activity实...
更高效的 cold stream 实现(即 Flow,根据官方数据,Flow 在部分 benchmarks 场景下效率是 RxJava 的两倍,详见参考链接 1)。 Google Android 团队同时也在大力推广 Jetpack 组件库,其中 AAC 架构组件带来了全新的应用架构实现方式,可以更便捷的实现 MVVM 这一非常适用于复杂业务场景的设计模式。
更高效的 cold stream 实现(即 Flow,根据官方数据,Flow 在部分 benchmarks 场景下效率是 RxJava 的两倍,详见参考链接 1)。 Google Android 团队同时也在大力推广 Jetpack 组件库,其中 AAC 架构组件带来了全新的应用架构实现方式,可以更便捷的实现 MVVM 这一非常适用于复杂业务场景的设计模式。
Kotlin 协程很强大,是一个雄心勃勃的项目,它为许多 Java 开发者带来了新的概念以及老问题的新解决方案。虽然它已经进入 release 阶段达一年半之久,但从我们的实践结果来看,其稳定性仍然还有提升的空间。 一、前言 1.1 技术背景与选型 自2017年 Google IO 大会以来,经过三年的发展,Kotlin 已成为 Android 平台无争议...
CommonPool 有点类似于 RxJava 的 Schedulers.computation(),主要是用于CPU密集型的计算任务。 CommonPool 使用 pool 来执行 block。 override fun dispatch(context: CoroutineContext, block: Runnable) = try { (pool ?: getOrCreatePoolSync()).execute(timeSource.trackTask(block)) } catch (e: RejectedEx...
Just to make sure some progress is made with migration from RxJava to coroutines, let's pick some next API calls to migrate. To keep track of progress, the migrated API calls should be moved from NcApi.java to NcApiCoroutines.kt Some next API calls to migrate for User level: setRead...