针对应用卡顿、死机、无法及时响应现象,Mi 提供 ANR 和 卡顿功能。 ANR,全称 Application Not Responding 或 The Application of Non Response,意思是“应用无响应”。引起 ANR 问题的根本原因,可以大致归为两类:
应用进程自身引起。例如:主线程阻塞、挂起、死循环。应用进程的其他线程 CPU 占用率过高,导致主线程无法抢占 CPU 时间片等。
其他进程间接引起。例如:当前应用进程与其他进程开展通信请求,其他进程长时间没有反馈。或者其他进程 CPU 占用率过高,导致当前应用进程无法抢占 CPU 时间片。
iOS 卡顿产生原因主要因为 UIKIT 本身的特性,所有 UI 操作都在主线程执行,如果主线程中包含大量的 IO、计算、绘制等操作,就可能阻塞主线程刷新 UI 操作,产生卡顿。
ANR/卡顿对于应用的影响并不亚于 Crash,OneAPM Mobile Insight 提供了 ANR/卡顿监控功能,该模块主要包含以下功能点:
展现选定时间范围 APP ANR/卡顿次数及 ANR/卡顿率时间曲线图。
ANR 率:指选定时间范围内 ANR 影响的会话数与用户总会话次数之比; 卡顿率:指选定时间范围内卡顿影响的会话数与用户总会话次数之比;
展示 ANR/卡顿在应用版本、地域、联网方式、系统版本、设备上的分布状况,并支持多维度分析。
按照 ANR/卡顿问题类型展示 ANR/卡顿发生时的线程信息、发生次数、解决/未解决状态、影响用户数等信息。
点击 ANR 发生次数,可进入 ANR/卡顿 问题详情页面,可查看 ANR/卡顿 发生时的以下信息:
ANR/卡顿详情信息,展示 ANR/卡顿过程后的 log 信息以及 trace 文件,帮助开发者定位 ANR/卡顿问题原因。