前言
业内一直有一个说法:技术好的未必底层够硬,但底层扎实的学起来进步如飞。这也是为什么如今的大厂都非常注重对底层原理的考察:除了可以看出面试者的即战力,底层原理更能看出一个开发者的发展潜力。
大家对此应该也深有感受,在面试的过程中,底层原理是无论如何都躲不过去的一关。最典型的就是Framework,很多大厂在招聘中都对此做出了明确的要求:
众所众知,Android的Framework层主要是由WMS、AMS还有View所构成,这三个模块穿插交互在整个Framework中。Binder和Handler更是重中之重,面试必问,目前一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler。
- Android中多进程通信的方式有哪些?
- 进程通信你用过哪些?原理是什么?(字节跳动、小米)
- 描述下Binder机制原理?(东方头条)
- Binder线程池的工作过程是什么样?(东方头条)
- Handler怎么进行线程通信,原理是什么?(东方头条)
- Handler如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)
- 说下AMS startActivity流程,WMS了解吗,聊下WMS (Vivo)
- AMS是如何启动的?(美团)
- Zygote、SystemServer 是干什么的,这么设计的好处知道吗?(字节)
- dumpsys的信息在哪里打印的?(百度)
- 横竖屏切换时Activity的生命周期?(字节)
- Activity启动模式了解吗?栈是如何管理的呢?(腾讯)
- …
如何学习Android Framework?
为了更好地帮助大家掌握AMS、WMS的知识,更好地理解Handler、Binde原理,特此这份腾讯技术团队出品的《Android Framework 开发揭秘》,希望可以帮助大家学习提升。
由于篇幅原因,以下仅已截图展示部分内容,这份纯手写笔记已经被整理成了PDF文档,完整版《Android Framework开发揭秘》PDF电子书,点击文末微信卡片即可免费领取!
第一章 系统启动流程分析
- 第一节 Android启动概览
- 第二节 init.rc解析
- 第三节 Zygote
- 第四节 面试题
第二章 Binder解析
- 第一节 宏观认识Binder
- 第二节binder的jni方法注册
- 第三节binder驱动
- 第四节 数据结构
- 第五节 启动service_manager
- 第六节获取service_manager
- 第七节 addService流程
- 第八节 Binder面试题全解析
第三章 Handler解析
- 第一节 源码分析
- 第二节 难点问题
- 第三节Handler常问面试题
第四章 AMS 解析
- 第一节 引言
- 第二节 Android架构
- 第三节 通信方式
- 第四节 系统启动系列
- 第五节 AMS
- 第六节 AMS 面试题解析
第五章 WMS解析
- 第一节Activity与Window相关概念
- 第二节 Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
- 第三节Android窗口管理服务WindowManagerService对窗口的组织方式分析
- 第四节 Android窗口管理服务WindowManagerService对输入法窗口的管理分析
- 第五节 Android窗口管理服务WindowManagerService对壁纸窗口的管理分析
- …
第六章PKMS Android10.0 源码解读
- 第一节 前言 PKMS 是什么东西?
- 第二节 PKMS 概述信息
- 第三节 PKMS角色位置
- 第四节 PKMS 启动过程分析
- 第五节 APK的扫描
- 第七节 PMS之权限扫描
- 第八节 PackageManagerService大综合笔记
文末
其实成为一名优秀的程序员并不难。
但是怎样才能成为一名优秀的程序员?
我认为最大的阻碍在于:广度与深度难以兼顾。
计算机专业基础课,如OS,数据库,网络,算法等,抽象且难以理解,大学时不学,以后就很难拾起来。
既强调动手,又强调抽象,二者缺一不可。但善于思考的人,往往喜欢谋定而后动;善于行动的人,往往没功夫回顾思考。
对于要先理解才动手的人,是种折磨。往往做了一两年,才突然理解某个概念。
对于初学者,难以区分学的知识,还是配置。
杂讯太多,不知道学什么。
总得来说,编程里最简单的地方往往价值不高,困难的地方这次避开了,下次还是要理解,逃也逃不掉。
以上,与诸君共勉。