news 2026/9/28 4:01:35

ActiveServices-Android16服务生命周期-启动绑定链路-前台服务类型策略-ANR防御

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ActiveServices-Android16服务生命周期-启动绑定链路-前台服务类型策略-ANR防御

文章目录

  • Android 16 ActiveServices 源码拆解:服务启动绑定链路、前台服务类型策略与 ANR 防御机制
    • 导入语
    • 1 ~> ServiceMap:按用户隔离的进程级服务索引
      • 1.1 为什么不是全局一张表
      • 1.2 ServiceMap 的三张核心索引
      • 1.3 延迟启动队列 mStartingBackground
    • 2 ~> 启动链路:从 startService 到 realStartServiceLocked
      • 2.1 完整调用链
      • 2.2 bringUpServiceLocked 的三板斧
      • 2.3 realStartServiceLocked 的 Binder 跨越
    • 3 ~> ANR 防御:bumpServiceExecutingLocked 计数器机制
      • 3.1 为什么服务也会 ANR
      • 3.2 双阈值设计
      • 3.3 计数器机制:executingCount
      • 3.4 超时后的处理
    • 4 ~> 绑定链路:bindService 的连接建立
      • 4.1 bindService 与 startService 的本质区别
      • 4.2 绑定链路核心代码
      • 4.3 AppBindRecord 与 IntentBindRecord
    • 5 ~> 前台服务治理: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 服务性能优化与后台行为治理的工程师阅读参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 4:00:32

嵌入式串行总线对比:I2C、SPI、UART、I2S的原理与选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 3:58:08

AI生成象棋安卓APP:用TaoToken统一Key打通Cline配置与真机验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华