前言
对于一个程序员必须要经历的过程,初入职场你觉得能完成任务就行。
- 第一阶段可称为搬运工阶段,你不需要了解原理,只要做出来就行。浑浑噩噩可能就5年光景了,你发现你做过很多项目,感觉什么都可以。
- 第二阶段可称为眼高手低阶段,处于开发阶段。有一天你去面试,你觉得经验很丰富了,应该没什么问题,可面试官一连串的问题,让你哑口无言。
- 第三阶段可称为觉醒阶段,人都是在被打击后挫败后,才会觉醒。于是开始往更高的方向进发,一切都要从源头说起,了解源码势在必行。
最终决定把android知识体系做个总结,全面讲解核心内容,无论是开发还是面试都不怕。知识如果没有体系,那么就是一盘散沙,只有形成体系,才能更加巩固能力认知。
每个系列都会详细介绍原理,比如:要想知道热修复插件化原理,那就从虚拟机开始;要想了解应用的启动流程,那就从系统架构开始;要想了解四大组件启动流程以及apk安装过程,那就从Framework层AMS,WMS,PMS开始吧。
从现在就开始,用一张图把知识体系建立起来,如下图。
设计思想
知识体系可分为5大系列,为什么要这样设计,首先既然是体系就该高度的整合;再者对于一个有5年以上开发经验的人,集合算法虚拟机等等这些都算是基础知识,你可以不精通,但必须要了解。对于应用层开发的工程师,Framework层必然也要了解。只有了解原理,当我们遇到问题时,才能从源头分析。其次就是开发部分了,像Handler,View绘制事件分发,性能优化等等这些也是必备知识;对于架构,Kotlin,Flutter也是开发中经常用到的技术。
知识体系内容链接
1.基础篇
集合系列(List,Map,Set,Queue)
线程系列(从原理到使用详解)
虚拟机系列(JVM,Dalvik,ART,热修复插件化增量更新)
android系统架构(各种核心进程,Fragment核心组件)
设计模式系列(单例模式,工厂模式,状态模式)
数据结构与算法(数组、链表、栈、队列)
2.开发核心系列
View系列(View绘制,View事件分发,渲染原理)
Handler消息机制(消息分发,同步屏障)
Bitmap(存储原理,大图加载)
进程通信机制(AIDL,Binder)
性能优化系列(绘制优化,内存优化,电量优化,启动优化,工具使用)
3.架构系列
Jetpack(Lifecycle,LiveData,ViewModel)
EventBus(实现原理)
…
未完待续