Android知识体系
2023-07-22 11:43:06 0 举报
AI智能生成
Android知识体系
作者其他创作
大纲/内容
基础知识
Java
泛型
泛型的作用与定义
通配符与嵌套
泛型上下边界
Rxjava中泛型的使用分析
注解
自定义注解
自定义注解与元注解
注解参数与默认值
注解的使用
APT,编译时注解处理器
插桩,编译后处理筛选
反射,运行时动态获取注解信息
Retrofit中的注解
并发
线程共享和协作
CPU核心数、线程数、时间片轮转机制解读
synchronized、lock、volatile、ThreadLocal如何实现线程共享
wait、notify/notifyAll,join方法如何实现线程间协作
CAS
CAS原理
CAS带来的ABA问题
原子操作类的正确使用实战
线程池
Callable、Future和FutureTask源码解读
线程池底部实现分析
线程池排队机制
手写线程池实战
Executor框架解读实战
Android AsyncTask原理解析
序列化
Serializable原理
Parcelable接口原理解析
JSON
虚拟机
垃圾回收机制
对象存活及强、弱等各种引用解析
快速解读GC算法之标记-清楚、复制以及标记-整理算法
GC日志解读
内存分配策略
JVM栈帧以及方法调用详解
JMM,Java Memory Model
Dalvik虚拟机
发射与类加载
发射基本概念与Class
三种获取Class对象的方式
获取构造器实例化对象与属性信息
包信息和方法
Hook技术动态变成
ClassLoader类加载器
动态代理模式
Android Davilk与ART
PathClassLoader、DexClassLoader、BootClassLoader
双亲委托机制
IO
Java IO体系
装饰者模式
InputStream与OutputStream
Reader与Writer
File文件操作
FileChannel
内存映射
IO操作Dex加密
Lambda
Consumer
Supplier
Predicate
Function
Stream
https://juejin.cn/post/6983835171145383967
Kotlin
Android
UI
事件分发机制
View渲染机制
onLayout与onMeasure
onDraw映射机制
常用View
RecyclerView
源码解析
布局管理器LayoutManager
ItemDecoration
ViewHolder与回收复用机制
CardView
源码解析
圆角阴影实现原理
5.0以下阴影与边距的适配
ViewPager
加载机制与优化
与Fragment的结合
WebView
使用与原理
js与Java交互
多进程WebView使用实战
WebView和Native的通信框架手写实战
ViewGroup
ConstraintLayout
LinearLayout
RelativeLayout
FrameLayout
GridLayout
自定义View
Canvas与Paint高级使用
自定义属性与动画
自定义瀑布流实战
组件内核
Activity与调用栈
四大启动模式与IntentFlag
APK启动流程与ActivityThread解析
Activity生命周期源码解析
实战Splash广告载入与延时跳转
Fragment的管理与内核
Fragment事务管理机制
Fragment转场动画
嵌套处理,ChildFragmentManager
Service内核原理
start与bind区别与原理
自带工作线程的IntentService
前台服务与Notify
组件间通信方案
Activity和Fragment低耦合通信设计
Android与Service通信
Intent数据传输与限制
ViewModel通信方案
事件总线EventBus源码解析
实战:自动感知生命周期事件总线LiveDataBus
IPC
Binder机制原理
AIDL配置文件
C/S架构Binder原理
Messager
进程间通信框架原理与实现
其他IPC
Broadcast
ContentProvider
文件
Socket
共享内存与管道
数据持久化
Android文件系统
sdcard与内部存储
轻量级kv持久化
SharedPreference原理
微信MMKV原理与实现
MMAP内存映射
文件数据结构
增量更新与全量更新
嵌入式Sqlite数据库
SqliteOpenHelper
Sqlite升级与数据迁移方案
实战注解ROOM数据库框架
Framework内核解析
XMS内核管理
AMS
Activity管理
实战插件化核心启动未安装Activity
WMS
Window体系
悬浮窗口工具实现
PackageMS面试锦囊
实战插件化框架原理与实现
Handler消息机制
Looper
Message链表与对象池
MessageQueue消息队列与epoll机制
布局加载与资源系统
LayoutManager加载布局流程
Resource与AssetManager
Jetpack
Lifecycle
Lifecycle的创建方式有几种
有什么不同?推荐使用哪种?为什么?
Event事件和State状态是什么关系
nStop()生命周期,处于什么State状态
Lifecycle是如何进行生命周期同步
如果在onResume注册观察者会收到哪几种回调?为什么?
ActivityFragment实现Lifecycle能力的方式一样吗?
为什么要做么设计?有什么好处?
Application能感知Activity生命周期吗?
Lifecycle从源码角度,简述Lifecycle的注册,派发,感知的过程
什么嵌套事件?发生的时机?Lifecycle是如何解决的?
全方面性能调优
设计思想与代码质量优化
六大原则
单一职责原则
开闭原则
里氏替换原则
依赖倒置原则
接口隔离原则
迪米特法则
设计模式
结构型模式
桥接模式
适配器模式
装饰器模式
代理模式
组合模式
创建型模式
建造者模式
单例模式
抽象工厂模式
工厂方法模式
静态工厂模式
行为型模式
模板方法模式
策略模式
观察者模式
责任链模式
命令模式
访问者模式
数据结构
线性表ArrayList
链表LinkedList
栈Stack
队列
Queue
Deque
阻塞队列
Tree
平衡二叉树
红黑树
映射表
HashTable
HashMap
SparseArray
ArrayMap
算法
排序算法
冒泡排序
选择排序
插入排序
快速排序
堆排序
基数排序
查找算法
折半查找
二分查找
树形查找
Hash查找
程序性能优化
启动速度与执行效率优化
冷暖热启动耗时检测与分析
启动黑白屏解决
卡顿分析
StickMode严苛模式
Systrace与TraceView工具
布局检测与优化
布局层级优化
过渡渲染检测
Hierarchy Viewer与Layout Inspactor工具
内存优化
内存抖动和内存泄露
内存大户,Bitmap内存优化
Profile内存检测工具
Mat大对象与泄露检测
耗电优化
Doze&Standby
Battery Historian
JobScheduler、WorkManager
网络传输与数据存储优化
Google序列化工具protobuf
7z极限压缩
使用webp图片
APK大小优化
APK瘦身
微信资源混淆原理
屏幕适配
开发效率优化
分布式版本控制系统Git
自动化构建工具Gradle
Gradle与Android插件
Transform API
自定义插件开发
插件实战
多渠道打包
发版自动钉钉
设计思想解读开源框架
热修复设计
AOT/JIT、dexopt与dex2oat
CLASS_ISPREVERIFIED问题与解决
即使生效与重启生效热修复原理
Gradle自动补丁包生成
插件化框架解读
Class文件加载Dex原理
Android资源加载与管理
四大组件的加载与管理
so库的加载原理
Android系统服务的运行原理
组件化框架设计
组件化之集中式路由-阿里巴巴ARouter原理
APT技术自动生成代码与动态类加载
Java SPI机制实现组件服务调用
拦截器AOP编程(跳转前预处理--登录),路由参数传递与IOC注入
手写组件化式路由
图片加载框架
图片加载框架选型
Universal ImageLoader、Glide、Picasso与Fresco
Glide
Picasso
Fresco
Glide原理分析
Fragment感知生命周期
自动图片大小计算
图片解码
优先级请求队列
ModelLoader与Registry机制
内存缓存原理
LRU内存缓存
引用计数与弱引用活跃缓存
Bitmap复用池
缓存大小配置
磁盘文件缓存
原始图像文件缓存
解码图像文件缓存
网络访问框架设计
网络通信必备基础
Restful RUL
HTTP协议&TCP/IP协议
SSL握手与加密
DNS解析
Socket通信原则
SOCKETS代理
HTTP普通代理与隧道代理
OKHttp源码解读
Socket连接池复用机制
HTTP协议重定向与缓存处理
高并发请求队列:任务分发
责任链模式拦截器设计
Retrofit源码解析
RxJava响应式编程框架设计
链式调用
扩展的观察者模式
事件变换设计
Scheduler线程控制
IOC架构设计
依赖注入与控制反转
ButterKnife原理
Dagger架构设计核心解密
Android架构组件-Jetpack
LiveData原理
Navigation如何解决tabLayout问题
ViewModel如何感知View生命周期以内核原理
Room架构方式方法
dataBinding为什么能够支持MVVM
WorkManager内核揭秘
Lifecycle生命周期
NDK模块开发
NDK知识体系
C与C++
数据类型
内存结构与管理
预处理指令、Typedef别名
结构体与共用体
指针、智能指针、方法指针
线程
类
函数、虚函数、纯虚函数与析构函数
初始化列表
JNI开发
静态与动态注册
方法签名、与Java通信
本地引用与全局引用
Native开发工具
编译器、打包工具与分析器
静态库与动态库
CPU架构与注意事项
构建脚本与构建工具
CMake
Makefile
交叉编译移植
FFmpeg交叉编译
X264、FAAC交叉编译
解决所有移植问题
AS构建NDK项目
Linux变成
Linux环境搭建,系统管理,权限系统和工具使用(vim等)
Shell脚本编程
底层图片处理
PNG/JPEG/WEBP图像处理与压缩
微信图片压缩
GIF合成原理与实现
音视频开发
多媒体系统
Camera与手机屏幕采集
图像原始数据格式YUV420(NV21与YV12等)
音频采集与播放系统
编解码器MediaCodec
MediaMuxer复用与MediaExtractor
FFmpeg
FFmpeg模块介绍
音视频解码,音视频同步
I帧,B帧,P帧解码原理
x264视频编码与faac音频编码
OpenGL绘制与NativeWindow绘制
流媒体协议
RTMP协议
音视频通话P2P webRTC
音视频效果处理
OpenGL ES美颜大眼
抖音视频效果分析与实现
子主题
机器学习
Opencv
图像预处理
灰度化、二值化
腐蚀与膨胀
人脸检测
身份证识别
车牌号识别
SVM分类器检测车牌
人工神经网络识别车牌
架构师炼成实战
架构设计
MVC、MVP、MVVM
模块化与组件化架构
收藏
0 条评论
下一页