news 2026/6/14 10:38:56

稳定性(二):ANR

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
稳定性(二):ANR

组件类 ANR

  • 当 AMS 通过 Binder 向应用进程派发跨进程任务时,系统会同步启动一个倒计时器(例如针对 Service 启动的 20 秒阈值),这一“埋炸弹”机制实质上将异步任务转化为带有超时约束的同步契约。应用进程在完成任务后必须通过 Binder 回调主动“拆弹”
  • AMS 利用 MainHandler 发送延迟消息实现精确计时
  • Android 15 对后台服务施加了更严格的约束:前台服务必须在 3 秒内完成初始化并调用 startForeground(),否则系统将直接触发 ANR。

Input 类 ANR

  • InputDispatcher 会通过 socket 与窗口建立事件通道,并在事件派发后启动超时检测。
  • 当事件被分发后,系统通过 MonitoredTimeout 机制跟踪其处理状态。
  • 默认超时时间为 5000 毫秒(可通过系统属性调整),超时检测采用事件驱动模式,在新事件到达、应用回调完成或周期性心跳检查时触发。
  • 一旦检测到超时,系统会通过 WindowManagerService 通知 ActivityManagerService,并收集包括 InputDispatcher 状态及应用进程信息在内的诊断数据,随后可能触发 ANR 弹窗及进程重启流程。
  • input事件5秒之内再次有事件才会ANR,如果没有不会弹窗

常见原因

综述:

  • 任何的耗时操作
  • 线程:阻塞 死锁
  • 资源不够:自身消耗 不能释放 系统分配

细分:

  • Binder 通信数据量过大
  • service binder 的数量达到上限
  • SystemServer Binder 锁竞争太多,导致等锁超时
  • 频繁 GC 触发 STW 导致主线程暂停,处理事件时间被拉长
  • 大量 SharedPerference 同时读写
  • SurfaceFlinger 超时
  • System Server 中 WatchDog 出现 ANR
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 11:56:10

炉石传说自动化脚本新手入门:从零开始的全流程指南

炉石传说自动化脚本新手入门:从零开始的全流程指南 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-S…

作者头像 李华
网站建设 2026/6/14 8:53:44

第一章——办公自动化之Excel拆分工具:精准处理数据,提升办公效能

在办公场景中,我们常常会遇到大型的Excel文件,为了更方便地对数据进行管理和分析,有时需要根据特定条件将其拆分成多个小文件。例如,人力资源部门有一份包含全公司员工信息的Excel文件,为了便于各部门分别处理本部门员…

作者头像 李华
网站建设 2026/6/14 8:08:31

创客匠人峰会深度解析:知识变现的 “IP 资产化” 革命 —— 从 “运营流量” 到 “沉淀资产” 的长期增长逻辑

引言:峰会核心命题 ——AI 时代知识变现的终极形态是 “IP 资产化”2025 年 11 月 22 日 - 25 日,创客匠人主办的 “全球创始人 IPAI 万人高峰论坛” 在厦门海峡大剧院圆满落幕。这场汇聚 10000 余名全球创始人的盛会,以 “AI 重构生产力&…

作者头像 李华
网站建设 2026/6/12 11:56:13

LoRaWAN网络,如何提升现代建筑的智慧服务能力?

物联网时代革命下,万事万物都被赋予了感知与沟通的“生命力”,无论是拔地而起的摩天大厦,还是横跨江海的宏伟长桥,它们都可以通过配置物联网技术达成“物与物、物与人”之间的无缝交互,让管理者可以快速获取到这些建筑…

作者头像 李华
网站建设 2026/6/14 4:16:22

FTXUI动态布局:掌握ResizableSplit的5个实战技巧

FTXUI动态布局:掌握ResizableSplit的5个实战技巧 【免费下载链接】FTXUI :computer: C Functional Terminal User Interface. :heart: 项目地址: https://gitcode.com/gh_mirrors/ft/FTXUI 在现代终端应用开发中,灵活的用户界面布局是提升工作效率…

作者头像 李华
网站建设 2026/6/12 12:40:05

9、高效Shell脚本编写与模块化调试指南

高效Shell脚本编写与模块化调试指南 1. xargs命令的使用 xargs命令用于从标准输入构建并执行命令行。像cp、echo、rm、wc等命令,不会从标准输入或其他命令的重定向输出获取输入,这时可以使用xargs将其他命令的输出作为输入提供给这些命令。其语法如下: xargs [option]部…

作者头像 李华