标签:Android清除筛选

Android-Framework(十八)-bindService 的通信过程

一次 bindService 会跨过客户端、systemserver 和 Service 进程。Java 层传出的对象先写成传输结构,Binder 驱动再为目标进程建立引用。客户端提交的是 BINDERTYPEBINDER,其中保存对象地址与 cookie;驱动为目标进程建立 binderref、分配 handle,接收方此后凭 handle 发起调用。回调返回原进程时,cookie 保存的本进程

Android-Framework(十七)-startService 与 bindService 的启动流程

startService 和 bindService 表面上对应两套 API,进入 Framework 后却共享了大半条启动链。两者都从调用方进程进入 ContextImpl,经 Binder 到达 system_server 中的 ActivityManagerService(下文简称 AMS),由 ActiveServices 查找或创建 ServiceRecord,再把生命周期调用投

Android-Framework(十六)-startActivity 的启动过程

本文依据 corpus 仓库中的四段录屏整理,内容覆盖桌面入口、前一个 Activity 的暂停、目标进程判定,以及新 Activity 的创建与显示。 上一篇《Android-Framework(十五)-进程的 fork 创建过程》已经分析 startSpecificActivityLocked 到 Zygote fork、ActivityThread.main 、attachApplic

Android-Framework(十五)-进程的 fork 创建过程

一、启动 Activity 时,进程不存在会发生什么 ActivityStackSupervisor.startSpecificActivityLocked 以进程名和 uid 查询 ProcessRecord。记录存在且 app.thread 已绑定时,AMS 可以直接调用 realStartActivityLocked ,其余情况会进入 startProcessLocked 。 源码位

Android-Framework(十四)-Launcher的启动过程

一、AMS.systemReady 桌面启动请求由 AMS 在 systemReady 里发出( frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java 第 11810 行附近): startHomeActivityLocked 做的事分三件: 拼home intent、让 PMS 解

Android-Framework(十三)-普通应用的安装过程

本文探讨的问题是:用户在文件管理器中点开一个 APK 后,系统怎样把它放进 /data/app、解析包信息,并把安装结果送回界面?从源码看,这条链横跨 PackageInstaller 应用进程、system_server 和 com.android.defcontainer 三个进程。 一、安装入口:点开 APK 后系统处理了什么 1.1 确认界面属于 PackageInstaller 文件管理

Android-Framework(十二)-AMS与PMS的启动过程

素材来源于“AMS 的启动过程分析”“PMS 的启动过程分析”“安装包的解析过程分析”三段视频。 一、system_server 应用进程里的 Application.onCreate 已经处于启动链后段。此时系统早已知道包名对应哪个 UID、入口 Activity 是谁、它声明了哪些 intent-filter。这些数据若到 startActivity 时才从 APK 临时读取,每次组件解析

Android-Framework(十一)-彻底理解Handler的通信过程

一、Handler 的循环为何不烧满 CPU Looper.loop 中确实存在一个没有退出次数限制的 for (;;)。但“循环一直存在”和“CPU 一直执行循环体”是两回事。只要当前没有可立即处理的消息,Java 层就会把等待时间交给 nativePollOnce,native 层最终进入 epoll_wait。线程此时处于阻塞等待状态,不会反复读取队列。 这条等待链可以总结为3点: 延迟