Android 知识梳理(进阶)
前言
该为文章为个人知识梳理后的产物(不断更新)。主要目的是为了让知识更系统,更加模块化。适合有Android开发经验,但是未进行过系统整理知识的读者,可以参照思维导图去对知识进行查缺补漏。下文将对思维导图进行部分补充:
需重点掌握
- 四大组件相关
- 数据库框架
- 性能优化系列
- 自定义View
- 属性动画
- 组件间通信
- Handler机制(原理)
- 网络框架:retrofit、okhttp
- 图片加载、处理框架:Glide、Fresco
- MVP
超链接
脑图中相关知识点超链:
- Activity四种启动模式: standard、singleTop、singleTask、singleInstance
- 常见数据库框架:OrmLite、GreenDao3.2、LitePal、Realm
- 优化专栏推荐
- 性能优化 基本概念
- App启动优化
- 事件分发
- 进程间通信
- 阿里Android热修复技术原理
- gradle专栏
- 反编译
备注
性能优化
- 堆 : 存储类对象(成员变量);空间大但不连续;易存在内存碎片
- 栈 : 存储函数(局部变量);空间小但连续,且运算速度快(内置处理器);栈为先进后出
- 四大引用 : 强引用 > 弱引用 > 软引用 > 虚引用
- 内存泄露 : 内存泄漏 当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对象持有它的引用,从而就导致对象不能被回收。
- GC : (1)发现无用的信息对象;(2)回收将无用对象占用的内存空间
- 绘制原理
负责包括Measure,Layout,Record,Execute的计算操作,GPU 负责Rasterization(栅格化)操作。
XML布局文件需要在CPU中首先转换为多边形或者纹理,然后再传递给GPU进行格栅化,
而以上的这些操作需要保证在16ms内完成,才能保证屏幕看起来是流畅的。 - 电池优化
Android系统上App的电量消耗主要由cpu、wakelock、数据传输(流量和wifi)、wifi运行、gps、other senior组成,而耗电异常也是由于这几个模块的使用不当。
UI
- 自定义View
- 测量——onMeasure():决定View的大小
- 布局——onLayout():决定View在ViewGroup中的位置
- 绘制——onDraw():如何绘制这个View。
- MeasureSpec
- EXACTLY:一般是设置了明确的值(100dp)或者是MATCH_PARENT
- AT_MOST:表示子布局限制在一个最大值内,一般为WARP_CONTENT
- UNSPECIFIED:表示子布局想要多大就多大,很少使用
常见设计模式
执行参考:例如保证 类代码行数不超过400,函数行数不超过20
- Builder设计模式,如AlertDialog
- 适配器模式,如GridView、ListView与Adapter
- 工厂模式,如BaseActivity
- 观察者模式,如ContentObserver
- 命令模式,如Handler.post