Yinchen 的博客
首页
分类
归档
关于
首页
分类
归档
关于
登录
标签:AOSP
清除筛选
Android-Framework(十一)-彻底理解Handler的通信过程
2026/09/22
Android系统
一、Handler 的循环为何不烧满 CPU Looper.loop 中确实存在一个没有退出次数限制的 for (;;)。但“循环一直存在”和“CPU 一直执行循环体”是两回事。只要当前没有可立即处理的消息,Java 层就会把等待时间交给 nativePollOnce,native 层最终进入 epoll_wait。线程此时处于阻塞等待状态,不会反复读取队列。 这条等待链可以总结为3点: 延迟
Android-Framework(十)-彻底理解驱动层的通信流程
2026/09/22
Android系统
素材来源:sanyinchen/corpus 仓库,资料整理自哔哩哔哩 Android Binder 源码教程。 一、一次 startActivity 包含两次 Binder 通信 旧版 Android Framework 中,Activity.startActivityForResult 会经 Instrumentation.execStartActivity 触发这类调用: 这一行发生
Android-Framework(四)-开机启动SystemServer进程
2026/09/18
Android系统
一、从 Zygote 到系统服务 Zygote 完成预加载后,Android 还不能立即运行应用。管理 Activity、窗口、电源和软件包的服务需要先启动,而这些服务中的许多都运行在同一个进程中:systemserver。 理解这段启动流程,要分清三个层次: 进程创建:Zygote 通过 fork 创建 systemserver,为子进程设置运行身份。 运行环境初始化:子进程加载入口类、
Android-Framework(三)-开机启动Zygote进程
2026/09/17
Android系统
一、Zygote 要回答的三个问题 在 Android 设备上执行 adb shell ps -A -o USER,PID,PPID,NAME grep -E 'zygote systemserver',你会看到 zygote 通常只有一个实例,PPID 是 1;而任何一个第三方应用进程的 PPID 都是这个 zygote。再看进程名,zygote 和 systemserver 都不是用户空间
Android-Framework(二)-开机启动Init进程
2026/09/13
Android系统
素材来源:AgentWorkFlow「02-开机启动 Init 进程」 一、从 1 号进程说起:init 要回答的三个问题 Android 启动后执行 adb shell ps,能看到 init 的 PID 是 1;杀掉一个由 init 管理、允许重启的 native service,新 PID 很快又会出现。这两个现象指向三个问题:init.rc 明明只是文本,怎样变成内存中的配置?配置里的命令
Android Framework 学习启动篇:前提、分层与入手路线
2026/09/12
Android系统
本文根据红橙Darren 的直播课程《Android Framework 学习启动篇》系列整理,三讲分别讲必备前提条件、Android Framework 简介与怎么入手学习。 ImageView 设置 android:adjustViewBounds="true" 后,宽度铺满屏幕、高度按图片比例自适应,看起来只是一个布局小问题。可一旦图片尺寸、scaleType、maxWidth/maxHei