稳定性--ANR治理

ANR治理

  • 大纲
1
2
3
4
5
anr是什么?
为什么会产生anr?
anr是怎样产生的,哪些场景下会产生?
anr如何治理?
解决anr问题的价值?
  • anr是什么?
    anr(Applicatipon No Response),即应用无响应;本质是一个性能问题;在用户和app进行交互时,常会遇到长时间无响应/卡顿的场景;为了改善性能,Android设计了anr的机制,即保证交互能在一定时间内完成,如果未完成,就抛出异常,也就是ANR;
  • anr设计机制:
    是系统通过与之交互的组件(Activity,Service,Receiver,Provider)以及用户交互(InputEvent)进行超时监控,以判断应用进程(主线程)是否存在卡死或响应过慢的问题,通俗来说就是很多系统中看门狗(watchdog)的设计思想。
    • 不同的组件,系统设置的超时时间是不同的,这个时间不同手机厂商的os可能也会做调整:
      alt text
    • 系统抛出anr的机制:
      在进行相关的操作前,系统会基于当前的时间戳和这个类型组件的超时时间设置,计算出超时时间戳;并将超时时间戳传递给anr触发函数,组件若未超时启动,则会在启动成功后,在传递一个参数给anr函数来阻止触发anr;若到超时时间,anr函数还未收到阻止信号,就会触发ANR(类似构建了个定时触发的任务);
    • 超时触发流程如下:
      alt text

头条anr治理系列

百度anr治理

欢迎关注我的其它发布渠道