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