ANR的全称是Application Not Responding。触发ANR的主要原因是UI主线程被阻塞。

以下是Android中检测ANR的位置:

ActivityManagerService中 ANR的检测:

broadcastTimeout

serviceTimeout

在broadcastreceiver的onReceive方法中不要show dialog,不要bind  a service。前者用notification替代,后者用startservice替代。

如果你需要在broadcastreceiver中做long time的操作,那么你需要使用service。这可以保持进程活着,不会被系统认为是empty进程,直到操作结束。

WindowManagerService中ANR的检测:

keyEvent timeout(

KeyWaiter.waitForNextEventTarget中,定义了dispatch timeout为5*1000

KeyWaiter. finishedKey用于唤醒所有等待dispatch key。

)

相关文章:

  • 2021-11-29
  • 2022-12-23
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2021-04-14
  • 2021-08-07
  • 2021-07-30
猜你喜欢
  • 2021-06-10
  • 2021-08-27
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案