在Android内存优化中,图片是经常用到的,也是十分消耗内存的,因此Bitmap优化是内存优化的重点。
Bitmap内存模型
获取Bitmap占用内存
(1)通过自身方法 getByteCount 获取。
(2)宽 * 高 * 一个像素点占用内存。
检测不合理的图片
背景:图片的宽高远大于控件的宽高。比如从网上获取的图片宽高远大于控件的
1 常规方法
实现:继承ImageView,覆写onMeasure()方法,在方法体内实现计算大小。
缺点:(1)侵入性强,(2)不通用
2 优雅的实现方案--ARTHooK
原理:挂钩,将额外的代码钩住原有方法,修改执行逻辑
应用场景:(1)运行时插桩,(2)性能分析
Epic库
是一个虚拟机层面,以Java Method为粒度的运行时Hook框架
github:https://github.com/tiann/epic
特点:(1)无侵入性,(2)通用性强,(3)开源方案,兼容问题大,不能带到线上环境。