Android Framework 框架测试之 SWT 重启
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
1.SWT 手机重启问题 (阻塞
60s
系统重启)简介
1. SWT 手机重启问题 (阻塞60s 系统重启)简介
SWT(Software Watchdog ) 主要用来监控SystemServer 重要线程/Service 的运行情况。60s ,就会把系统重启,来保证系统恢复正常状态。
判断阻塞的方法:
利用Services 注册monitor 去Check
主要是: AMS、 Foreground Thread
发送handler 到重要的Loop 线程来Check 是否阻塞。
主要是: Main Thread、UI Thread、IO Thread、Display Thread、WMS 、Other Services。
SWT 判断阻塞的方法 图文描述如下:
SWT 判断阻塞的方法
2. SWT 手机重启问题处理流程
SWT 处理流程:半分钟:
一分钟:
SWT 处理大致流程如下:
SWT 处理流程
3. SWT 手机重启问题的原因
导致 SWT 重启原因如下:
检查SWT 原因分类
4. SWT 手机重启问题分析流程
搜索关键 watchdog
SWT 流程分析
5.SWT 手机重启问题分析举例
确认线程关系
线程被 Block 搜索关键字held by
确认线程关系
线程被 Waiting 结合代码分析。
确认线程关系
线程死锁
确认Block的线程是否有闭环的死锁关系。
线程死锁
线程死锁
Binder的Server 端卡住
线程状态Native,并且callstack中含有一对IPCThreadState::waitForResponse-->IPCThreadState::talkWithDriver 的明显特征。
Bind的Server端卡住
Bind的Server端卡住
SurfaceFlinger 卡住导致重启
搜索关键字 I watchdog ,查看是否有 surfaceflinger hang,默认卡住40s,就会重启。
SurfaceFlinger 卡住
Native 方法执行时间过长导致重启
线程状态Native,查看是否有PowerManagerService.nativeSetAutoSuspend
Native 方法执行时间过长
Zygote Fork 进程时卡住
线程状态Native,查看是否有 Process.zygoteSendArgsAndGetResult
Zygote Fork 进程时卡住
Dump 时间过长
Dump 超过60s 可能会引起手机重启。dumpStackTraces 或 dumpStackTraces process
Dump 时间过长
前面有ANR 发生
前面有ANR 发生
前面有fatal JE NE KE 等Exception发生
自动化测试脚本有call dumpsys 去dump 系统信息
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。
既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取
1.支付宝搜索 522398497,或扫码支付宝红包海报。
支付宝扫一扫,每天领取大红包
2.微信红包,微信扫一扫即可领取红包
微信扫一扫,每天领取微信红包
小礼物走一走,来简书关注我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!