Android中的ANR到底是如何产生的
首先,ANR:是说Application Not Responsing 应用程序无法响应。一般是一些耗时操作导致。
产生ANR的场景
(1)input事件超过5 s 没有处理完成;
(2)service executing 超时(bind,create,start,unbind等等),前台20s,后台200s;
(3)广播处理超时,前台10S,后台60s;
(4)ContentProvider执行超时,20s。
常见的原因
A.耗时操作,如复杂的layout,庞大的for循环,IO等;
B.被Binder 对端block;
C.被子线程同步锁block;
D.Binder被占满导致主线程无法和SystemServer通信;
E.得不到系统资源(CPU/RAM/IO)。
网友评论