- 1.1 计算机网络
- 1.1.1 计算机网络概述
- 1.1.2 应用层
- 1.1.3 传输层(⭐⭐⭐)
- 1.1.4 网络层
- 1.2 操作系统(⭐⭐⭐)
- 1.2.1 操作系统基本功能
- 1.2.2 Linux系统
- 1.2.3 补充
- 2.1 集合原理
- 2.2 其他
- 3.1 线程基础
- 3.2 其他
- 3.2.1 并发容器
- 3.2.2 atomic包,6种原子类
- 3.2.3 ThreadLocal
- 3.3.4 线程池
- 5.1 数据结构
- 5.2 算法
- 5.3 刷题
- 6.1 核心知识点
- 6.1.1 四大组件
- 6.1.2 布局和控件
- 6.1.3 自定义View/ViewGroup
- 6.1.4 动画和手势
- 6.1.5 网络
- 6.1.6 图片加载
- 6.1.7 Handler
- 6.1.8 Android各版本新特性
- 6.1.9 其他
- 6.2 开源库使用
- 6.3 性能优化
- 6.3.1 快-流畅的体验
- 6.3.2 稳-稳定
- 6.3.3 省-省电/流量
- 6.3.4 小-安装包小
- 7.1 核心知识点
- 7.1.1 多进程
- 7.1.2 Activity难点
- 7.1.3 Service难点
- 7.1.4 BroadcastReceiver难点
- 7.1.5 ContentProvider难点
- 7.1.6
- 7.2 开源库原理
- 7.3 Gradle
- 7.4 初级架构
- 7.5 JNI
- 7.6 动态化
- 7.6.1 前置知识
- 7.6.2 热修复:nuwa&Tinker
- 7.6.3 插件化:VirtualAPK
- 7.7 编译插桩
- 7.8 Framework
- 7.8.1 系统服务
- 7.8.2 应用进程
- 7.8.3 UI体系
- 7.8.4 进程通信
- 7.8.5 线程通信
- 7.8.6 其他
- 8.1 性能优化方向
- 8.2 基础架构方向
- 8.3 NDK、音视频
- 8.4 大前端
- 8.4.1 前端基础
- 8.4.2 Flutter(⭐⭐)
- 8.4.3 其他
- 9.1 Koltin(⭐⭐)
- 9.1.1 基础部分
- 9.1.2 高级部分
- 9.2 Python(⭐)
0. 背景
构建一个属于自己的知识体系,能够让我们学到的知识体系化.让自己清楚哪块是自己的知识盲区,哪块已经构建起根基.然后根据实际情况,有针对性的进行模块学习.让自己成为一个合格的Android工程师.
平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘.于是我建立了一个自己的笔记仓库 (一个我长期维护的笔记仓库,感兴趣的可以点个star~你的star是我写作的巨大大大大的动力),将平时学到的东西都归类然后放里面,需要的时候呢也方便复习.过了段时间,我觉得这样还是不够好,于是我最近花了点时间,整理了一下Android中的常见知识,画了一张思维导图.更清晰地认识自己的知识边界到底在哪里,哪些东西还不足.
2021 最新Android知识体系
2021 最新Android知识体系
2021 最新Android知识体系
2021 最新Android知识体系
2021 最新Android知识体系
2021 最新Android知识体系
2021 最新Android知识体系
2021 最新Android知识体系
此知识体系呢只是一个参考,大家可以根据自己的实际情况进行增删(先将笔记保存到幕布,然后就可以进行修改了).然后进行查漏补缺,提升自己~
如果需要相关的资料以及体系大纲图可以点击 GitHub自行获取
同时我也推荐一下我的Android交流裙Android技术交流,不仅可以免费获取资料,而且还能有一帮大佬为你摆平关于Android的技术问题~
1. 计算机基础
1.1 计算机网络
1.1.1 计算机网络概述
- 网络七层协议
- TCP/IP四层模型
- 底层协议
-
1.1.2 应用层
HTTP协议(⭐⭐⭐)
- DHCP协议(⭐⭐⭐)
-
1.1.3 传输层(⭐⭐⭐)
TCP协议
-
1.1.4 网络层
IP协议
-
1.2 操作系统(⭐⭐⭐)
1.2.1 操作系统基本功能
进程管理
- 作业管理/文件管理
-
1.2.2 Linux系统
内存管理
- 进程管理
- 文件系统
-
1.2.3 补充
自旋锁/互斥锁/读写锁/条件变量/共享文件
- 消息队列/管道/信号量
- 操作系统的用户态与内核态
- 上下文切换成本
- 进程,线程与协程
2.1 集合原理
- ArrayList
- Vector
- Stack
- LinkedList
- HashMap
- Hashtable
- TreeMap
- LinkedHashMap
- HashSet
- TreeSet
- CopyOnWriteArrayList
- ConcurrentHashMap
- LinkedBlockingQueue
- SynchronousQueue
- SparseArray
-
2.2 其他
面向对象
- 设计模式
- 反射
- 泛型
- 注解
3.1 线程基础
- 实现多线程
- 启动线程
- 停止线程
- 线程的6种状态
- 各种各样的锁
- 悲观锁和乐观锁
- 共享锁和独占锁
- 公平锁和非公平锁
- 可重入锁和非可重入锁
- 可中断锁和非可中断锁
- 自旋锁和非自旋锁
- 偏斜锁/轻量级锁/重量级锁
- JVM对synchronized锁的优化
- wait/notify/sleep/join等重要方法
- 守护线程,优先级等属性
- 线程安全
- Future获取运行结果
- Fork/Join模式
- CountDownLatch
- CyclicBarrier
- Semaphore
- Condition
- Phaser
- 重排序
- 原子性
- 内存可见性
- CAS原理
-
3.2 其他
3.2.1 并发容器
Vector/Hashtable
- ConcurrentHashMap
- CopyOnWriteArrayList
- 阻塞队列
- 非阻塞队列
-
3.2.2 atomic包,6种原子类
分类
- 原子类与锁
-
3.2.3 ThreadLocal
使用场景
-
3.3.4 线程池
优点
- 参数
- 分类
- 执行任务流程
- 拒绝策略
- 正确关闭线程池
- 线程池复用原理
4. JVM虚拟机
- 内存区域
- 内存模型
- 内存分配回收策略
- Java对象的创建、内存布局和访问定位
- GC: 引用计数及可达性分析,垃圾回收算法,G1及ZGC
- 类加载机制
- 双亲委派模型
- 编译器优化: 方法内联,逃逸分析
- 虚拟机相关: HotSpot及JIT,Dalvik,ART及AOT
- JVM执行方法
- JVM实现反射
- JVM实现泛型
- JVM实现异常
- JVM实现注解
5.1 数据结构
6.1 核心知识点
6.1.1 四大组件
- Activity
- Service
- BroadcastReceiver
-
6.1.2 布局和控件
RelativeLayout
- FrameLayout
- LinearLayout
- ConstraintLayout
- Button
- TextView
-
6.1.3 自定义View/ViewGroup
onMeasure
- onLayout
- onDraw
- onTouchEvent
- dispatchTouchEvent
-
6.1.4 动画和手势
View动画
- 属性动画
- layoutAnimation视图动画
- 手势检测(GestureDetector)
-
6.1.5 网络
-
6.1.6 图片加载
本地图片
- 网络图片
- 压缩图片
- 多图列表
-
6.1.7 Handler
Looper
- Message
- MessageQueue
- 内存泄漏
-
6.1.8 Android各版本新特性
Android5.0
- Android6.0
- Android7.0
- Android8.0(O)
- Android9.0(P)
- Android10.0(Q)
-
6.1.9 其他
adb常用命令
- 文件和数据库
- 异步线程池
-
6.2 开源库使用
Retrofit/OKhttp
- RxJava* Glide
-
6.3 性能优化
6.3.1 快-流畅的体验
-
6.3.2 稳-稳定
避免内存泄露*
-
6.3.3 省-省电/流量
使用JobScheduler调度任务
-
6.3.4 小-安装包小
apk构成
- 包体优化
7.1 核心知识点
7.1.1 多进程
- Binder
- AIDL
-
7.1.2 Activity难点
onSaveInstanceState()和onRestoreInstanceState()
- intent-filter匹配规则
- 生命周期
- 启动模式
- Activity启动过程
-
7.1.3 Service难点
startService流程
-
7.1.4 BroadcastReceiver难点
-
7.1.5 ContentProvider难点
-
7.1.6
View绘制
- 事件分发
- 消息队列
- AsyncTask原理
- RemoteViews
-
7.2 开源库原理
OkHttp
- Retrofit
- RxJava
- Glide
- LeakCanary
- GreenDao
-
7.3 Gradle
编译
- 混淆
- 签名
- Groovy
- Gradle构建流程
- GradlePlugin
- Gradle构建优化
- App构建过程
-
7.4 初级架构
设计模式
-
7.5 JNI
JNI基础
-
7.6 动态化
7.6.1 前置知识
Android打包流程
- Java字节码
- GradlePlugin
- TransformAPI
-
7.6.2 热修复:nuwa&Tinker
经典-64k问题
- dex分包
- MultiDex优化
- findClass原理
- QQ空间热补丁方案
- Nuwa应用层实现
-
7.6.3 插件化:VirtualAPK
加载类
- 资源访问
-
7.7 编译插桩
AOP
-
7.8 Framework
7.8.1 系统服务
Zygote启动
- Android系统启动
-
7.8.2 应用进程
启动流程
- 启用Binder机制
-
7.8.3 UI体系
显示原理
- UI线程启动
- 屏幕刷新机制
- surface
-
7.8.4 进程通信
Binder
- IPC通信流程
- Binder对象跨进程传递
-
7.8.5 线程通信
消息队列
- 消息传递机制
- Handler消息延迟实现
- IdleHandler原理
- 消息屏障
-
7.8.6 其他
跨进程传递大图片
- 四大组件启动原理
8.1 性能优化方向
- 稳定性优化
- 启动速度优化
- 绘制优化
- 内存优化
- 包体积优化
- 网络优化
- IO优化
- 存储优化
-
8.2 基础架构方向
Android工程实践
- Gradle自动化构建
- 编译插桩技术
- Android架构
- Android热修复
- Android插件化
-
8.3 NDK、音视频
C
- C++
- JNI基础
- 编译原理与语法基础
Linux基础 - 热修复
- Gif图实现
- 音视频基础
- ffmpeg
- WebRTC
- opengl
- vulkan
-
8.4 大前端
8.4.1 前端基础
HTML
- CSS
-
8.4.2 Flutter(⭐⭐)
Dart入门
- Flutter入门
- 开发
- 工程管理
- 线上运维
- 发布
-
8.4.3 其他
ReactNative
- 小程序* 性能优化
9.1 Koltin(⭐⭐)
9.1.1 基础部分
- 内置类型
- 类型初步
- 表达算式
- 函数进阶
-
9.1.2 高级部分
泛型
- 反射
- 注解
-
9.2 Python(⭐)
基础
- 函数
- 高级特性
- 函数式编程
- 模块
- 面向对象编程
- 错误,调试,测试
- IO编程
- 进程和线程常用内建模块
- 常用第三方模块
- 网络编程
- 数据库
- 异步IO
作者:Android柯南
链接:https://www.jianshu.com/p/26757493ff98
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。