首先,先来了解下,android 应用的程序入口。我们都知道,应用的入口是 ActivityThread 文件中的 main 方法,截图如下:

我们可以看到,最后调用 Looper.loop(),也就是说,其实我们的应用其实就是运行在死循环中的。如果不运行死循环中,那么程序运行完,就结束了。
接下来,说下为什么阻塞跟程序卡死(ARN)
阻塞,应用死循环,没有输入事件,MsgQ为空,Looper空闲状态,线程进入阻塞,释放CPU执行权,等待唤醒。
卡死(ARN),是指消息里有超时操作,导致应用处理不过来,后续发送的消息。所以,阻塞跟应用卡死(ARN)没有必然的联系。
网友评论