BATJ30道经典常见Android 高级面试题及答案( 十 )

如何解决ANR

首先定位ANR发生的log:

04-01 13:12:11.572 I/InputDispatcher( 220): **Application i****s not responding**:Window{2b263310com.android.email/com.android.email.activity.SplitScreenActivitypaused=false.  5009.8ms since event 5009.5ms since waitstarted

CPUusage from 4361ms to 699ms ago ----CPU在ANR发生前的使用情况 04-0113:12:15.872 E/ActivityManager(  220): 100%TOTAL: 4.8% user + 7.6% kernel + 87% iowait 04-0113:12:15.872 E/ActivityManager(  220): CPUusage from 3697ms to 4223ms later:-- ANR后CPU的使用量

从log可以看出 , cpu在做大量的io操作 。

所以可以查看io操作的地方 。

当然 , 也有可能cpu占用不高 , 那就是 主线程被block住了 。

6.Android 线程间通信有哪几种方式

1)共享变量(内存)

推荐阅读