
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
文章目录线程调度的原理Android的线程调度线程调度的原理任意时刻,只有一个线程占用CPU,处于运行状态多线程并发:轮流获取CPU使用权Android的线程调度
文章目录1 什么是VSYNC?1.1 帧率和刷新频率1.2 VSYNC21 什么是VSYNC?1.1 帧率和刷新频率在讲解 VSYNC 之前,需要了解两个相关的概念:Refresh Rate:屏幕在1秒内刷新屏幕的次数,这取决于硬件的固定参数,例如60HzFrame Rate:GPU在1秒内绘制操作的帧数,例如60fpsGPU会获取图形数据进行渲染,然后硬件负责把渲染后的内容呈现到屏幕上,它们两者
java crash 由 JVM 触发处理,最终走到 /data/system/dropbox 目录用文件保存native crash 由管道通信建立 socket 接收通知,最终走到 /data/system/dropbox 目录用文件保存anr 由多种情况(事件、前后台服务)触发器处理,最终走到 /data/system/dropbox 目录用文件保存所有的 crash 处理在 Android
启动协程有两个函数:launch 和 async,async 可以并行启动协程,最后通过 await 等待结果返回,常用于多个处理同时执行后合并结果的操作如果你只是希望两个并行流程在顺序上有某种依赖而不依赖结果,可以用 join 函数,可以做到协程之间互相等待。
runBlocking 启动协程不需要 CoroutineScope 是因为它既不需要上下文又不需要被取消runBlocking 的阻塞是线程级别的阻塞,它的定位是把挂起函数的代码转换成阻塞式代码,方便让传统的线程写法 API 使用。
我们都知道用 suspend 关键字声明一个函数就是挂起函数,那我们什么时候会需要这样自定义一个挂起函数呢?所以自定义挂起函数正确的方式是:我需要一个挂起函数,因为代码需要用到别的挂起函数,所以我需要给函数加上 suspend 关键字声明为挂起函数。声明为挂起函数会限制函数的使用范围,就要遵循 kotlin 的规则来使用。并不存在 [挂起函数怎么写] 这个想法,而是你在写自定义函数的时候,如果里面
文章目录1 基本要素:函数和变量1.1 Hello world1.2 函数1.3 变量1.4 字符串模板2 类和属性2.1 类和属性2.2 属性2.3 自定义访问器3 表示和处理选择:枚举和"when"3.1 声明枚举3.2 使用"when"处理枚举3.3 在"when"结构中使用任意对象3.4 使用不带参数的"when"3.5 智能转换:合并类型检查和转换3.6 重构:用"when"代替"if"
1 协程的概念和基本使用1.1 什么是协程协程 Coroutine 其实就是在Kotlin提供的一套线程API,让我们不用过多关心线程也可以方便的写出并发操作(即协程就是一套线程框架,让我们在Kotlin中方便的使用线程,方便的地方在于它能够在同一个代码块里进行多次的线程切换)。1.2 协程的基本使用在我们使用协程时,一般都会使用一个函数 launch() 创建一个协程,然后在 launc...
文章目录1 可空性1.1 可空类型1.2 安全调用运算符 "?."1.3 Elvis运算符 "?:"1.4 安全转换 "as?"1.5 非空断言 "!!"1.6 let函数1 可空性现代编程语言包括Kotlin解决 NullPointerException 问题的方法是把运行时的错误转变为编译期的错误。通过支持作为类型系统的一部分的可空性,编译器就能在编译期发现很多潜在的错误,从而减少运行时抛..
文章目录1 创建型模式1.1 伴生对象增强工厂模式1.1.1 单例代替工厂1.1.2 伴生对象创建静态工厂方法1.1.3 扩展伴生对象方法1.2 内联函数简化抽象工厂1.3 用具名可选参数而不是构建者模式2 行为型模式2.1 观察者模式2.1.1 属性委托观察Deletages.observable()2.1.2 Vetoable2.2 策略模式设计模式是软件工程中解决特定问题的一种指南,我们通.







