ANR类型

  • input dispatch timeout
  • service timeout
  • brocastrecevier timeout
  • contentprovider timeout

input dispatch timeout

---> InputDispatch#dispatchOnce
---> InputDispatch#onAnrLocked
---> InputManagerService#notifyANR
---> ActivityManagerService#inputDispatchingTimedOut
---> ActivityManagerService#appNotResponding

ActivityManagerService#appNotResponding

  • 采集 cpu 负荷
  • 发送信号量SIGNAL_QUIT给 发生anr的进程Signal Catcher线程,让其采集所有线程堆栈

service 、 brocast recevier、contentprovider 和 input dispatch 采集anr 都是一样

参考资料

如果您觉得写得还不错或者对您有所启发,那就赶紧动动您的小指头,点击下面的红色按钮,狠狠地打赏一番吧。