Binder源码笔记 发表于 2021-11-03 更新于 2022-09-12 ProcessStateProcessState 是一个系统 Service 进程的单例,一个进程只有一个 ProcessState 实例。 zygote 在fork出应用进程之后会在c层完成初始化启动 binder 阅读全文 »
InputManagerService 发表于 2021-10-18 native层概述InputReader输入事件的读取者。 运行在单独的 InputReaderThread 线程中,死循环,通过 EventHub.getEvents 来获取输入事件。 阅读全文 »
kotlin-flow 发表于 2021-10-04 更新于 2022-04-11 基础的流demo12345678910111213141516171819202122import kotlinx.coroutines.*import kotlinx.coroutines.flow.* fun simple(): Flow<Int> = flow { // 流构建器 for (i in 1..3) { delay(100) // 假装我们在这里做了一些有用的事情 emit(i) // 发送下一个值 }}fun main() = runBlocking<Unit> { // 启动并发的协程以验证主线程并未阻塞 launch { for (k in 1..3) { println("I'm not blocked $k") delay(100) } } // 收集这个流 simple().collect { value -> println(value) } } 阅读全文 »
nested2嵌套滚动机制 发表于 2021-07-24 更新于 2021-10-03 开头nested2是安卓用于处理嵌套滚动的方案。 主要有两个重要的接口, NestedScrollingParent2 和 NestedScrollingChild2 ,分别代表桥套滚动的外层和内层。 阅读全文 »
屏幕刷新机制 发表于 2021-03-18 更新于 2021-10-03 requestLayoutview.requestLayout 最终会调用 ViewRootImpl.requestLayout 阅读全文 »
redux源码 发表于 2021-01-24 更新于 2021-10-03 Redux是一个Flutter状态管理工具。实现并不复杂,其核心是一个简单的观察者模式。我们从 观察者 和 被观察者 两个角度来分析 Redux 阅读全文 »
源码探究Activity的生命周期 发表于 2021-01-02 更新于 2022-10-16 startActivitystartActivity有很多重载方法,最终都会调用startActivityForResult 阅读全文 »