
文章目录Android 16 ActiveServices 源码拆解:服务启动绑定链路、前台服务类型策略与 ANR 防御机制导入语1 ~ ServiceMap:按用户隔离的进程级服务索引1.1 为什么不是全局一张表1.2 ServiceMap 的三张核心索引1.3 延迟启动队列 mStartingBackground2 ~ 启动链路:从 startService 到 realStartServiceLocked2.1 完整调用链2.2 bringUpServiceLocked 的三板斧2.3 realStartServiceLocked 的 Binder 跨越3 ~ ANR 防御:bumpServiceExecutingLocked 计数器机制3.1 为什么服务也会 ANR3.2 双阈值设计3.3 计数器机制:executingCount3.4 超时后的处理4 ~ 绑定链路:bindService 的连接建立4.1 bindService 与 startService 的本质区别4.2 绑定链路核心代码4.3 AppBindRecord 与 IntentBindRecord5 ~ 前台服务治理:ForegroundServiceTypePolicy 与限时机制5.1 Android 14+ 的 FGS 类型权限5.2 ShortFgsInfo:短时前台服务的豁免5.3 TimeLimitedFgsInfo:按类型的硬时限6 ~ 服务的生命周期状态机7 ~ 实战:观察与调参7.1 查看所有运行中的服务7.2 查看前台服务类型策略7.3 调整后台启动并发数7.4 追踪服务 ANR思考 总结结尾Android 16 ActiveServices 源码拆解:服务启动绑定链路、前台服务类型策略与 ANR 防御机制📖文章简介:本文基于 Android 16 AOSP 源码,深度拆解ActiveServices的服务生命周期管理体系。文章从startService/bindService的 Framework 入口切入,追踪ServiceMap的进程级索引结构、bringUpServiceLocked→realStartServiceLocked的启动链路、bumpServiceExecutingLocked→serviceDoneExecutingLocked的 ANR 防御计数器,以及 Android 14+ 引入的ForegroundServiceTypePolicy类型权限检查与ShortFgsInfo/TimeLimitedFgsInfo限时机制。配以 Mermaid 状态图展示 ServiceRecord 的完整生命周期流转,附dumpsys activity services实战与后台启动限制调参,适合从事 Android 服务性能优化与后台行为治理的工程师阅读参考。