Android AOSP基础(四)Source Insight和Android Studio导入系统源码_刘望舒的专栏-CSDN博客
ioctl()函数详解_运维_shanshanpt的专栏-CSDN博客
Android 多CPU架构支持所需要了解的知识 - 寒江蓑笠的专栏 - CSDN博客
好文章
【凯子哥带你学Framework】Activity启动过程全解析 - 赵凯强 - CSDN博客
为什么主线程不会因为Looper.loop()里的死循环卡死或者不能处理其他事务
为什么不会卡死
handler机制是使用pipe来实现的,主线程没有消息处理时会阻塞在管道的读端。
binder线程会往主线程消息队列里添加消息,然后往管道写端写一个字节,这样就能唤醒主线程从管道读端返回,也就是说queue.next()会调用返回。
主线程大多数时候都是处于休眠状态,并不会消耗大量CPU资源。
既然是死循环又如何去处理其他事务呢?
答案是通过创建新线程的方式。
我们看到main方法里调用了thread.attach(false),这里便会创建一个Binder线程(具体是指ApplicationThread,Binder的服务端,用于接收系统服务AMS发送来的事件),该Binder线程通过Handler将Message发送给主线程。
ActivityThread对应的Handler是一个内部类H,里边包含了启动Activity、处理Activity生命周期等方法。
Binder
https://mp.weixin.qq.com/s/NBm5lh8_ZLfodOXT8Ph5iA 写给 Android 应用工程师的 Binder 原理剖析
耗时两年,Android多进程从头讲到尾(万字总结,建议收藏) - 简书 AIDL 有Demo
从getSystemService()开始,开撸Binder通讯机制 - 简书
写给 Android 应用工程师的 Binder 原理剖析
原创 张磊 BaronTalk 2018-04-10
https://mp.weixin.qq.com/s/NBm5lh8_ZLfodOXT8Ph5iA
binder 原理解析 真的不错
Android APK打包安装、应用进程启动过程、Activity启动流程 - csdn_aiyang的博客 - CSDN博客
Android Window、Activity、DecorView以及ViewRoot
Window、Activity、DecorView以及ViewRoot之间的关系
View相关
从setContentView揭开DecorView - 四月葡萄的博客 - CSDN博客
ViewRootImpl介绍 - 四月葡萄的博客 - CSDN博客
自定义View原理篇(1)-Measure过程 - 四月葡萄的博客 - CSDN博客
自定义View原理篇(2)- layout过程 - 四月葡萄的博客 - CSDN博客
自定义View原理篇(3)- draw过程 - 四月葡萄的博客 - CSDN博客
自定义View实践篇(1)- 自定义单一View - 四月葡萄的博客 - CSDN博客
自定义View实践篇(2)- 自定义ViewGroup - 四月葡萄的博客 - CSDN博客