导图社区 Android超完整知识体系
超完整的Android知识体系,从四大组件、性能优化、架构设计到开源框架都有涵盖,非常实用,值得收藏。
编辑于2021-10-28 12:00:12Android 知识架构
进程/线程/事件
异步
原生异步
Handler
源码分析
MessageQueue
Looper
HandlerThread
Timer/TimerTask
Thread
ThreadPoolExector
AsyncTask
IntentService
事件
回调
事件总线
Otto
Agera
RxJava
EventBus
观察者
进程同步
sp是进程同步的吗?
如何使sp进程同步
进程和Application生命周期
进程/优先级
可见进程
服务进程
后台进程
空进程
前台进程
线程
线程同步
synchronized和lock
volatile
IPC
Messager
AIDL
使用步骤
创建aidl文件
实现aidl接口
客户端逻辑, ServiceConnection 匿名类
服务器逻辑 ,实现Stub接口,重新onBind方法
BroadcastReceiver
ContentProvider
Binder
原理分析
应用保活
白色保活
驱动前台Service
黑色保活
广播相互唤醒
系统广播
app 间广播
灰色保活
利用系统漏洞
api<18
startNotifacation 传入new Notification
api>18
性能优化
内存优化
内存泄漏
场景
集合类
非静态内部类/匿名内部类
Bitmap没有被释放
单例
工具
MAT
hprof
LeakCanary
Memory Tracker
内存溢出 OOM
原理
沙盒模式
Zygote ->app 进程
避免
使用轻量的数据结构
大内存对象复用
减少Bitmap内存占用
避免内存泄漏
电量优化
数据传输优化
多线程优化
网络优化
缓存机制
三级缓存
内存
强引用
LRU
虚引用
弱应用
文件/硬盘
网络
参考 ImageLoader
常见优化
ListView 优化
Apk大小优化
去掉多余资源
去掉重复代码
布局性能优化
程序启动时间优化
架构设计
组件化
路由 Router
模块化和组件化区别
插件化
原理
四大组件插件化
Service插件化
Activity插件化
资源插件化
实现
热修复
原理
第三方
实现
开发框架
MVVM
MVC
MVP
其他框架
数据库框架
LitePal
GreenDao3.2
Realm
OrmLite
图片缓存框架
ImageLoader
Picasso
Fresco
Glide
文件框架
网络框架
volley
okhttp/retrofit
其他
网络通信
Tcp 三次握手 四次挥手
https
概念
https请求慢的解决方法
原理
如何验证证书合法性
哪里用到了对称加密/非对称加密
加密算法
Socket
长连接
视频播放
推送
类型
push
建立长连接
服务器向客户端发送信息
pull
耗电大
客户端轮询服务器
Http
介绍
http header
请求头
通用头
实体头
响应头
http body
响应码
使用
HttpUrlConnection/HttpClient
UDP
数据
本地存储
Realm 数据引擎
SharaedPreference
文件
SQLite
数据格式
json
xml
跨进程
Serialzable
Parcelable
定时任务
AlarmManger
Timer
Handler
Runtime
虚拟机
ART
Dalivik
DEX分包
热修复
Force close
ANR
类型
BroadCastTimeOut
KeyDispatchTimeOut 事件无响应
ServiceTimeOut
解决方案
耗时任务开启子线程,使用Handler进行通信
调试工具
Logcat
Stetho
日志管理
adb
JNI/NDK
编译方法
so文件编译
源码编译
单元测试
系统功能
安全方案
安全机制
进程沙箱
权限声明
内存管理
进程通信
应用程序签名
访问控制
混淆
ARM汇编语言
反编译
底层知识
java
jvm虚拟机
classLoader
类加载机制
双亲委派模型
JVM内存模型
开线程,影响哪块内存
GC回收机制
Android
Dalvik虚拟机
classLoader
类加载机制
ART虚拟机
App沙箱化
权限管理
动态权限申请
底层权限是如何grant的
应用程序安装手机后流程
app启动流程(点击桌面开始)
FrameWork
NDK编程
架构设计
并行开发
多线程
网络管理
socket通信
TCP/IP
http协议
Linux内核机制
服务
应用服务
远程服务
本地服务
系统服务
Java系统服务
硬件服务
核心平台服务
System Service
本地系统服务
SQLite
Media FrameWork
Android系统
内存管理
任务管理机制
进程管理机制
消息通信机制
安全机制
UI
View的工作原理
onMeasure
MeasureSpec
onDraw/dispatchDraw
paint
Bitmap
Canvas
PorterDuffXfermode
Matrix
onLayout
View基础知识
工具
GestureDetector
VelootyTracker
ViewConfiguration
常见监听
onTouch
onTouchEvent
onClick
监听的回调顺序
View的滑动
事件分发
dispatchTouchEvent 事件分发
true
false
super
onInterccptTouchEvent 拦截事件
true/super
false
onTouchEvent 消费事件
false/super
true
三个方法 各有三种情况:true , false , super
弹性滑动
滑动冲突
ui基础
常用控件
Fragment
Arguments
ListView
缓存策略
WindowManger
RecyclerView
缓存策略
Support Library
WebView
ViewPager
surfView
常用布局
交互提示
Toast
Dialog
SnackBar
Notification
动画效果
Animation 补间动画
Animator
属性动画
原理
帧动画
MaterialDesign 动画
状态栏/导航栏
沉浸式设计
资源
度量单位
dp/sp
px
尺寸/分辨率
dpi
theme
layout
Drawable
.9patch图片
气泡文字
Shape
gradient:渐变色
size 大小
stroke :描边
padding 内边距
corners :圆角
selector
MaterialDesign
MaterialDesign设计
沉浸式设计
兼容包
v4
annotations
multidex
percent
v13
design
v7
换肤功能
适配
四大组件
四大组件
Activity
启动模式
启动过程
Intent/flag
taskAffinity
生命周期
Service
是否绑定
startService(unBounded)
IntentService
bindService(Bounded)
不需要IPC , 与本地Service绑定
实现IBinder即可
IPC 确定线程安全 ,任务进入顺序队列
实现Handler 传入Messenger
IPC 支持多线程
AIDL , Proxy-Stub ,aidl代码自动生成
sticky/non-sticky
ContentProvider
运行在另外一个进程
数据源
BroadCastReceiver
注册方式
动态
静态
传递方式
有序
无序
事件种类
自定义
系统
范围
全局
BroadcaseReceiver
本地
LocalBroadcaseReceiver
组件持有的Context区别
Application
编译打包
dex文件
dex文件说明
dex分包
解决65k限制问题
热修复
打包
aar文件
说明
每个libary model编译都会生成一个aar,里面包括资源文件和class文件
打包工具
jenkins
配置
shell脚本打包
编译工具
Gradle
Groovy
用法
编译一个apk的task任务流程
使用
多渠道打包
Ant
代码托管
svn
git
常见命令
Apk打包流程
1、打包资源文件,生成R.java文件
2、处理aidl文件,生成相应java 文件
3、编译工程源代码,生成相应class 文件
4、转换所有class文件,生成classes.dex文件
5、打包生成apk
6、对apk文件进行签名
7、对签名后的apk文件进行对其处理