kotlin 协程原理分析 - Flow 线程切换的原理
0 前言本片文章,简单总结下 Flow 线程切换的原理。 前面分析了 buffer 背压的原理,这里趁热打铁,讲讲 flowon 切换线程的原理: 1 flowon 和 Rxjava 的对比RxJava 有 2 个操作符:subscribeOn 和 observeOn subscribeOn 作用:指定 上游 的线程。它决定了 Observable.create { ... } 在哪个线程执行。 ...
阅读更多
kotlin 协程原理分析 - Flow 背压机制分析
0 前言本片文章,简单总结下 Flow 背压操作符的原理。 主要从下面几个方面来分析下背压的原理。 1、背压操作符的类型 2、背压操作符的原理 1 Flow 背压操作符Flow 的背压操作符主要用于处理数据生产速度与消费速度不匹配的问题,核心策略包括缓冲、丢弃旧数据或取消旧处理。以下是主要操作符及其作用: buffer 功能:缓存数据并控制流速,支持指定缓冲区大小和溢出策略。 溢出策略: SUSP ...
阅读更多
kotlin 协程原理分析 - Flow 原理分析
0 前言本片文章,简单总结下 Flow 启动流程和原理。 1 Flow 启动方式Flow 作为协程体系下的流式加载库,提供了比 Rxjava 更加简洁的功能,同时其和谷歌全家桶完美结合,可以帮大家写出架构更加完美的程序。 Flow 常见的启动方式如下: flowOf该操纵符号将多个同类: 12345public fun <T> flowOf(vararg elements: T): F ...
阅读更多
kotlin 协程原理分析 - 协程线程池的原理
0 前言从结构,原理等多个角度,简单分析下协程分发器和线程池的原理。 这里要说下协程的线程池和 java 线程池是不一样的,协程自己定制化了一套线程池逻辑。 1 Main 分发器12@JvmStaticpublic actual val Main: MainCoroutineDispatcher get() = MainDispatcherLoader.dispatcher MainDispatc ...
阅读更多
kotlin 协程原理分析 - 启动方式比较分析
0 前言基于微模型,分析下协程常见的启动方式的差异和对比。 常见的启动方式有:launch、async、runblock 下面会对比分析下三者的区别。 细节就不讲了,都是微模型的那一套,区别在于启动方式、异常机制、分发器等的不同,这个后续在分析。 1 launch 启动123456789101112public fun CoroutineScope.launch( context: Coro ...
阅读更多
kotlin 协程原理分析 - 协程的线程切换
简单总结下协程线程切换的原理: 0 前言协程线程切换的原理很简单,如果能理解微模型,那么协程切换实际上就是不同微模型之间的切换; 1 简单场景12345678fun main() { GlobalScope.launch { println("GlobalScope 协程开始执行") withContext(Dispatch ...
阅读更多
kotlin 协程原理分析- CoroutineContext 和偏左链表
简单总结下 CoroutineContext 原理: CoroutineContext 原理总结核心概念CoroutineContext 是协程的上下文环境,用于保存和传递数据。本质上是一个索引表,包含 Key 和 Element,每个 Element 都有唯一的 Key。 接口设计123456789101112131415161718192021222324252627public interf ...
阅读更多
kotlin 协程原理分析 - 挂起函数的原理
0 前言suspend 函数,就是被 suspend 修饰的 function,本篇文章简单分析下 suspend 函数的工作原理和编译处理: 1 suspend 函数的例子123suspend fun helloWorld() { println("hellow world")} suspend 关键字表示挂起,意味着该函数会被 kotlin 的编译器 ...
阅读更多
kotlin 协程原理分析 - 启动微模型
0 前言简单分析下,kotlin 协程的启动微模型,协程由于其结构化的原理,父子协程之间有依赖关系,而协程的执行也是有依赖关系,基于微模型。 只要搞清楚了这个微模型,那么协程的嵌套也就了如指掌了。 下面以 launch 为例子,我们分析下微模型。 1 启动一个简单协程下面分析下 launch 的启动流程,核心的代码是到这个地方: 1234567891011121314151617181920212 ...
阅读更多
Shadow 原理分析
上周在团队内部做了一次技术分享,关于 shadow 核心技术原理,下面是这次分享的内容: 我这里也提供了 pdf 的百度云地址,微信扫一扫就好~~ 原理总览 工程结构 接口动态化原理 插件包的组成 宿主如何启动插件 Activity PPS 的作用 插件独立进程的好处 同名 View 问题和解决方案 传统解决方案 Factory 注入 com.tencent.shadow.cor ...
阅读更多