android ANR

2019-06-21  本文已影响0人  莫库施勒

http://gityuan.com/2019/04/06/android-anr/

// TODO


超时时长

Service 是通过Handler 添加超时Message, 执行完成后会remove掉,如果没有remove,就会报ANR
Service 报告流程

ActiveServices.realStartServiceLocked()

bumpServiceExecutingLocked()

scheduleServiceTimeoutLocked()

ActiveServices.serviceTimeout()

mAm.mAppErrors.appNotResponding()
Input ANR
InputDispatcher::dispatchOnceInnerLocked()

findFocusedWindowTargetsLocked()

checkWindowReadyForMoreInputLocked() // 检查窗口是否有能力再接收新的输入事件

InputDispatcher::handleTargetsNotReadyLocked() // 事件5s之内还没有分发完毕,则调用

InputDispatcher::onANRLocked()

NativeInputManager.notifyANR()

InputManagerService.notifyANR()

InputMonitor.notifyANR()

AMS.inputDispatchingTimeOut()
AMS.UiHandler.sendMessage()
上一篇 下一篇

猜你喜欢

热点阅读