Android系统原理

好文章

【凯子哥带你学Framework】Activity启动过程全解析 - 赵凯强 - CSDN博客



Android系统原理_第1张图片


Android系统原理_第2张图片
出自玉刚  https://juejin.im/post/5baa3eb76fb9a05cdb103c74



为什么主线程不会因为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

AIDL 使用浅析

binder 原理解析 真的不错

简单明了,彻底地理解Binder -

简单说Binder(1) - CSDN博客

可能是讲解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博客


【透镜系列】看穿 > 触摸事件分发 > - 掘金

你可能感兴趣的:(Android系统原理)