Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

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

ActivityThread.java

我们可以看到,最后调用 Looper.loop(),也就是说,其实我们的应用其实就是运行在死循环中的。如果不运行死循环中,那么程序运行完,就结束了。

接下来,说下为什么阻塞跟程序卡死(ARN)

阻塞,应用死循环,没有输入事件,MsgQ为空,Looper空闲状态,线程进入阻塞,释放CPU执行权,等待唤醒。
卡死(ARN),是指消息里有超时操作,导致应用处理不过来,后续发送的消息。所以,阻塞跟应用卡死(ARN)没有必然的联系。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容