anr总结

2023-10-23  本文已影响0人  WangRain1

1.no focus Window anr

这种一般是有key事件分发导致属于input模块:

大致定位方式:

1.ActivityTaskManager //启动界面 

2.wm_set_resumed_activity //系统调用resume

3.InputDispatcher  //input 事件分发

4.wm_on_resume_called //客户端接收到系统resume开始创建window

5.input_focus: [Focus request //请求焦点

WindowManager: ANR

6.finishDrawing //window onshow完成

7.input_focus: [Focus entering //拿到焦点

2.input有焦点但是input事件分发超时。

Input dispatching timed out is not responding. Waited 5000ms for FocusEvent(hasFocus=true

no focus window:

1.activity client 端还没有走onresume 此时窗口还没创建;

2.window窗口还没有HAS_SHOW,虽然窗口创建了,但是window状态还没show;

3.window在HAS_SHOW了但是focus还没有enter进去到当前的window;

4.window已经有focus但是发出的keyevent一直没有被client端消费,一般是主线程被占用,

input 的 wait queue队列等待remove的时间超时,耗时导致;

3.过滤条件

ActivityTaskManager|wm_set_resumed_activity|Input|wm_on_resume_called|input_focus|WindowManager|finishDrawing|ANR

4.bugreport中确定pid,tid,uid看耗时。

5.多屏下焦点

当目标key指定dispaly发送,但是目标display当前不是top时候,会有一个切换display的动作,日志:

"Attempting to move non-focused display"

上一篇下一篇

猜你喜欢

热点阅读