外观
讲一个黑屏、花屏、闪屏或冻屏问题:你如何跨层定位?
标准回答
我会选一个最熟悉的真实案例,先定义现象和触发条件,再沿应用、任务窗口、渲染合成和显示链路核对状态。重点讲哪个证据排除了错误方向、哪个变化构成根因,以及修复后怎样验证。简历未给出具体根因,不能直接套用一个虚构事故。
- 黑屏、旧画面不更新和短暂闪一下不是同一种问题。记录操作、目标屏、发生时间与恢复方式,让日志和 Trace 对齐同一次事件。
- 应用是否产生新内容,任务和窗口是否在预期显示上,图层可见性及裁切是否正确,再看合成或显示链路。每一步都说明证据从哪里来。
- 修改最相关的状态或时序后复现对照,检查正常和异常分支;“加延时就好了”只能说明时序相关,仍需解释缺失的条件。
通俗例子
假设目标屏仍显示旧画面,可依次问“应用没产出新帧,还是新内容没有被正确显示?”这能指导排查分支。它只是定位示范,不是简历中某次冻屏的实际根因。
深入解释
**现象与时间先对齐:**黑屏、旧画面不更新和短暂闪一下不是同一种问题。记录操作、目标屏、发生时间与恢复方式,让日志和 Trace 对齐同一次事件。
**分层查可观测状态:**应用是否产生新内容,任务和窗口是否在预期显示上,图层可见性及裁切是否正确,再看合成或显示链路。每一步都说明证据从哪里来。
**用最小改动验证根因:**修改最相关的状态或时序后复现对照,检查正常和异常分支;“加延时就好了”只能说明时序相关,仍需解释缺失的条件。
追问与回答
为什么确定不是应用卡死?
提供该时刻线程、帧或业务状态证据;不能用“进程还在”证明应用没有阻塞。
加 100ms 延时为什么不稳?
负载会变化,固定时间不能代表目标已就绪;应找到并等待真正的完成条件。
易混淆点
不要把黑屏一律归因于 SurfaceFlinger,也不要把冻屏一律等同 ANR。
进一步举证
- 补齐一个案例的完整时间线、真实根因和个人改动。
- 准备复测次数、覆盖场景及闭环确认方式。
内容来源
- Android · AI Agent 知识手册 · 原条目
resume-R17