1背景
牛哥工作五年了,是一名“资深”程序员(嗯…至少他自己是这么认为的)
牛哥所在的公司已经两年没有涨过工资了(嗯…至少他是两年没涨过了) 牛哥坐不住了,这位“资深”程序员打算去“外面的世界”看看,牛哥学历还算不错,于是找到了大学同学,得到了阿里内推的面试机会。
2伤害不高,侮辱性极强
面试官很和善,牛哥坐下自我介绍完毕之后开始技术面试
面试官:用过广播没有呢?
牛哥:广播?这个用过的(牛哥内心os:谁特么没用过广播啊,这有什么好问的)
面试官:那可以说说广播的注册方式吗?
牛哥:有两种注册方式,静态注册和动态注册(阿里面试,就这水平?)
面试官:你知道为什么要设计这两种方式吗?
牛哥:(啊这…从来没想过这个,猜一下吧)可能是因为用途不同吧(此时语气明显不自信了),一是为了在Activity生命周期内有效,这个是动态广播;静态广播是为了在程序关闭的时候也能收到。
面试官想了下:这么说也没错,但是还差点意思,你知道为什么在程序关闭的时候静态能收到?
牛哥:这个可能是广播的设计原理吧…(有点顶不住啊,特么不就是一个广播么,会用不就得了,哪这么多问题)
面试官笑了笑:那说说广播底层的设计原理吧
牛哥:是Binder
面试官:那为什么要用Binder呢?Binder的原理是什么?Binder的优势是什么?为什么Binder不用socket实现?
牛哥人傻了,面试官一顿底层给牛哥直接整懵逼了,原来之前每个自以为很low的问题都是在自己挖坑,越往下越懵逼。
接下来的每个知识点也是如法炮制的问法,牛哥开始还能说几句,问到后面就一句也说不出来了。
面试只进行了20分钟,牛哥就“回家等通知”了。
3还有这好事?
牛哥碰了一鼻子灰,回去百度了下发现,原来Binder是面试必问题!
Binder和Handler至关重要!四大组件的通信原理底层都是Binder,Intent数据传递也受到Binder控制!
对面试结果不甘心,憋着一口气,牛哥想一次性把Binder和Handler都掌握起来,可是搜遍全网,找到的东西不是知识点太零散了,就是讲的不够通透。沉浸在烦恼中的牛哥没注意背后走来的同事。
同事:干啥呢,这些小广告可全是病毒,你要慎重啊!
牛哥:吓我一跳!在找Binder个Handler的学习资源呢。信息爆炸,找个精准点的资源太难了!
所以为了帮助到大家更好的了解Android Framework框架中的知识点,这边查阅大量的素材,整理了一下的 Android Framework 核心知识点手册,里面记录了:有Handler、Binder、AMS、WMS、PMS、事件分发机制、UI绘制……等等,几乎把更Framework相关的知识点全都记录在册了
《Android Framework学习手册》:https://qr18.cn/AQpN4J
- 开机Init 进程
- 开机启动 Zygote 进程
- 开机启动 SystemServer 进程
- Binder 驱动
- AMS 的启动过程
- PMS 的启动过程
- Launcher 的启动过程
- Android 四大组件
- Android 系统服务 - Input 事件的分发过程
- Android 底层渲染 - 屏幕刷新机制源码分析
- Android 源码分析实战