Android系统原理

Android AOSP基础(四)Source Insight和Android Studio导入系统源码_刘望舒的专栏-CSDN博客

ioctl()函数详解_运维_shanshanpt的专栏-CSDN博客

Android 多CPU架构支持所需要了解的知识 - 寒江蓑笠的专栏 - CSDN博客

好文章

3分钟看懂Activity启动流程 - 简书

【凯子哥带你学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通讯机制 - 简书

能用【白话文】来分析Binder通讯机制? - 简书

写给 Android 应用工程师的 Binder 原理剖析

原创 张磊 BaronTalk 2018-04-10

https://mp.weixin.qq.com/s/NBm5lh8_ZLfodOXT8Ph5iA

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博客


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容