🔥 2021 最新Android知识体系

22,994 阅读7分钟

0. 背景

构建一个属于自己的知识体系,能够让我们学到的知识体系化.让自己清楚哪块是自己的知识盲区,哪块已经构建起根基.然后根据实际情况,有针对性的进行模块学习.让自己成为一个合格的Android工程师.

平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘.于是我建立了一个自己的笔记仓库 (一个我长期维护的笔记仓库,感兴趣的可以点个star~你的star是我写作的巨大大大大的动力),将平时学到的东西都归类然后放里面,需要的时候呢也方便复习.过了段时间,我觉得这样还是不够好,于是我最近花了点时间,整理了一下Android中的常见知识,画了一张思维导图.更清晰地认识自己的知识边界到底在哪里,哪些东西还不足.

图片看不清楚朋友的可以访问图片源文件,或者查看幕布笔记链接: Android知识体系最新

此知识体系呢只是一个参考,大家可以根据自己的实际情况进行增删(先将笔记保存到幕布,然后就可以进行修改了).然后进行查漏补缺,提升自己~

1. 计算机基础

1.1 计算机网络

1.1.1 计算机网络概述

  • 网络七层协议
  • TCP/IP四层模型
  • 底层协议
  • 底层设备

1.1.2 应用层

  • HTTP协议(⭐⭐⭐)
  • DHCP协议(⭐⭐⭐)
  • NAT

1.1.3 传输层(⭐⭐⭐)

  • TCP协议
  • UDP协议

1.1.4 网络层

  • IP协议
  • ICMP协议

1.2 操作系统(⭐⭐⭐)

1.2.1 操作系统基本功能

  • 进程管理
  • 作业管理/文件管理
  • 存储管理/设备管理

1.2.2 Linux系统

  • 内存管理
  • 进程管理
  • 文件系统
  • 常见命令操作

1.2.3 补充

  • 自旋锁/互斥锁/读写锁/条件变量/共享文件
  • 消息队列/管道/信号量
  • 操作系统的用户态与内核态
  • 上下文切换成本
  • 进程,线程与协程

2. Java基础(⭐⭐⭐)

2.1 集合原理

  • ArrayList
  • Vector
  • Stack
  • LinkedList
  • HashMap
  • Hashtable
  • TreeMap
  • LinkedHashMap
  • HashSet
  • TreeSet
  • CopyOnWriteArrayList
  • ConcurrentHashMap
  • LinkedBlockingQueue
  • SynchronousQueue
  • SparseArray
  • ArrayMap

2.2 其他

  • 面向对象
  • 设计模式
  • 反射
  • 泛型
  • 注解

3. Java并发

3.1 线程基础

  • 实现多线程
  • 启动线程
  • 停止线程
  • 线程的6种状态
  • 各种各样的锁
    • 悲观锁和乐观锁
    • 共享锁和独占锁
    • 公平锁和非公平锁
    • 可重入锁和非可重入锁
    • 可中断锁和非可中断锁
    • 自旋锁和非自旋锁
    • 偏斜锁/轻量级锁/重量级锁
    • JVM对synchronized锁的优化
  • wait/notify/sleep/join等重要方法
  • 守护线程,优先级等属性
  • 线程安全
  • Future获取运行结果
  • Fork/Join模式
  • CountDownLatch
  • CyclicBarrier
  • Semaphore
  • Condition
  • Phaser
  • 重排序
  • 原子性
  • 内存可见性
  • CAS原理
  • AQS框架

3.2 其他

3.2.1 并发容器

  • Vector/Hashtable
  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • 阻塞队列
  • 非阻塞队列
  • ConcurrentSkipListMap

3.2.2 atomic包,6种原子类

  • 分类
  • 原子类与锁
  • 原子类与volatile

3.2.3 ThreadLocal

  • 使用场景
  • 原理

3.3.4 线程池

  • 优点
  • 参数
  • 分类
  • 执行任务流程
  • 拒绝策略
  • 正确关闭线程池
  • 线程池复用原理

4. JVM虚拟机

  • 内存区域
  • 内存模型
  • 内存分配回收策略
  • Java对象的创建、内存布局和访问定位
  • GC: 引用计数及可达性分析,垃圾回收算法,G1及ZGC
  • 类加载机制
  • 双亲委派模型
  • 编译器优化: 方法内联,逃逸分析
  • 虚拟机相关: HotSpot及JIT,Dalvik,ART及AOT
  • JVM执行方法
  • JVM实现反射
  • JVM实现泛型
  • JVM实现异常
  • JVM实现注解

5. 数据结构与算法

5.1 数据结构

  • 队列
  • 数组
  • 链表
  • Hash表
  • 二叉树
  • 基础排序算法
  • 字符串操作

5.2 算法

  • 分治算法
  • 动态规划
  • 贪心算法
  • 分支限界法

5.3 刷题

6. Android基础

6.1 核心知识点

6.1.1 四大组件

  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

6.1.2 布局和控件

  • RelativeLayout
  • FrameLayout
  • LinearLayout
  • ConstraintLayout
  • Button
  • TextView
  • RecyclerView
  • ......

6.1.3 自定义View/ViewGroup

  • onMeasure
  • onLayout
  • onDraw
  • onTouchEvent
  • dispatchTouchEvent
  • 自定义属性

6.1.4 动画和手势

  • View动画
  • 属性动画
  • layoutAnimation视图动画
  • 手势检测(GestureDetector)
  • 缩放手势检测(ScaleGestureDecetor)

6.1.5 网络

  • 请求网络
  • 解析数据

6.1.6 图片加载

  • 本地图片
  • 网络图片
  • 压缩图片
  • 多图列表
  • DiskLruCache

6.1.7 Handler

  • Looper
  • Message
  • MessageQueue
  • 内存泄漏
  • ThreadLocal

6.1.8 Android各版本新特性

  • Android5.0
  • Android6.0
  • Android7.0
  • Android8.0(O)
  • Android9.0(P)
  • Android10.0(Q)
  • Android11.0(R)

6.1.9 其他

  • adb常用命令
  • 文件和数据库
  • 异步线程池
  • Resources

6.2 开源库使用

  • Retrofit/OKhttp
  • RxJava
  • Glide
  • 注解框架
  • Jetpack

6.3 性能优化

6.3.1 快-流畅的体验

  • 布局优化
  • 绘制优化
  • 内存优化
  • 启动优化
  • 其他

6.3.2 稳-稳定

  • 避免内存泄露
  • 避免崩溃

6.3.3 省-省电/流量

  • 使用JobScheduler调度任务
  • 使用懒惰法则

6.3.4 小-安装包小

  • apk构成
  • 包体优化

7. Android进阶

7.1 核心知识点

7.1.1 多进程

  • Binder
  • AIDL
  • Messenger

7.1.2 Activity难点

  • onSaveInstanceState()和onRestoreInstanceState()
  • intent-filter匹配规则
  • 生命周期
  • 启动模式
  • Activity启动过程
  • App启动过程

7.1.3 Service难点

  • startService流程
  • bindService流程

7.1.4 BroadcastReceiver难点

  • 注册/发送/接收工作原理

7.1.5 ContentProvider难点

  • ContentProvider启动过程

7.1.6

  • View绘制
  • 事件分发
  • 消息队列
  • AsyncTask原理
  • RemoteViews
  • Window和ViewRootImpl

7.2 开源库原理

  • OkHttp
  • Retrofit
  • RxJava
  • Glide
  • LeakCanary
  • GreenDao
  • ARouter

7.3 Gradle

  • 编译
  • 混淆
  • 签名
  • Groovy
  • Gradle构建流程
  • GradlePlugin
  • Gradle构建优化
  • App构建过程
  • 差异化打包

7.4 初级架构

  • 设计模式
  • MVC,MVP,MVVM

7.5 JNI

  • JNI基础
  • NDK基础

7.6 动态化

7.6.1 前置知识

  • Android打包流程
  • Java字节码
  • GradlePlugin
  • TransformAPI
  • ASM

7.6.2 热修复:nuwa&Tinker

  • 经典-64k问题
  • dex分包
  • MultiDex优化
  • findClass原理
  • QQ空间热补丁方案
  • Nuwa应用层实现
  • NuwaGradle

7.6.3 插件化:VirtualAPK

  • 加载类
  • 资源访问
  • 生命周期管理

7.7 编译插桩

  • AOP
  • ASM

7.8 Framework

7.8.1 系统服务

  • Zygote启动
  • Android系统启动
  • ServiceManager启动及工作原理

7.8.2 应用进程

  • 启动流程
  • 启用Binder机制
  • Application初始化流程
  • Context

7.8.3 UI体系

  • 显示原理
  • UI线程启动
  • 屏幕刷新机制
  • surface
  • vsync

7.8.4 进程通信

  • Binder
  • IPC通信流程
  • Binder对象跨进程传递
  • OneWay机制

7.8.5 线程通信

  • 消息队列
  • 消息传递机制
  • Handler消息延迟实现
  • IdleHandler原理
  • 消息屏障
  • ThreadLocal原理

7.8.6 其他

  • 跨进程传递大图片
  • 四大组件启动原理

8. 领域专家

8.1 性能优化方向

  • 稳定性优化
  • 启动速度优化
  • 绘制优化
  • 内存优化
  • 包体积优化
  • 网络优化
  • IO优化
  • 存储优化
  • 耗电优化

8.2 基础架构方向

  • Android工程实践
  • Gradle自动化构建
  • 编译插桩技术
  • Android架构
  • Android热修复
  • Android插件化
  • Android核心源码

8.3 NDK、音视频

  • C
  • C++
  • JNI基础
  • 编译原理与语法基础
  • Linux基础
  • 热修复
  • Gif图实现
  • 音视频基础
  • ffmpeg
  • WebRTC
  • opengl
  • vulkan
  • opencv

8.4 大前端

8.4.1 前端基础

  • HTML
  • CSS
  • JavaScript

8.4.2 Flutter(⭐⭐)

  • Dart入门
  • Flutter入门
  • 开发
  • 工程管理
  • 线上运维
  • 发布
  • 测试调试

8.4.3 其他

  • ReactNative
  • 小程序
  • 性能优化

9. 其他Android相关

9.1 Kotlin(⭐⭐)

9.1.1 基础部分

  • 内置类型
  • 类型初步
  • 表达算式
  • 函数进阶
  • 类型进阶

9.1.2 高级部分

  • 泛型
  • 反射
  • 注解
  • 协程

9.2 Python(⭐)

  • 基础
  • 函数
  • 高级特性
  • 函数式编程
  • 模块
  • 面向对象编程
  • 错误,调试,测试
  • IO编程
  • 进程和线程常用内建模块
  • 常用第三方模块
  • 网络编程
  • 数据库
  • 异步IO

写了个python脚本,将幕布思维导图转成markdown并标上序号. 有兴趣的可以在这里看源码

参考资料

感谢以上几位大佬