anr总结

作者: WangRain1 | 来源:发表于2023-10-23 17:57 被阅读0次

    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"

    相关文章

      网友评论

          本文标题:anr总结

          本文链接:https://www.haomeiwen.com/subject/hcjjidtx.html