Bitmap优化

在Android内存优化中,图片是经常用到的,也是十分消耗内存的,因此Bitmap优化是内存优化的重点。

 

Bitmap内存模型

Android内存优化--Bitmap_github

获取Bitmap占用内存

(1)通过自身方法 getByteCount 获取。

(2)宽 * 高 * 一个像素点占用内存。

 

 

检测不合理的图片

背景:图片的宽高远大于控件的宽高。比如从网上获取的图片宽高远大于控件的

1 常规方法

实现:继承ImageView,覆写onMeasure()方法,在方法体内实现计算大小。

缺点:(1)侵入性强,(2)不通用

 

2 优雅的实现方案--ARTHooK

原理:挂钩,将额外的代码钩住原有方法,修改执行逻辑

应用场景:(1)运行时插桩,(2)性能分析

 

Epic库

是一个虚拟机层面,以Java Method为粒度的运行时Hook框架

github:https://github.com/tiann/epic

Android内存优化--Bitmap_Android_02

 

 

特点:(1)无侵入性,(2)通用性强,(3)开源方案,兼容问题大,不能带到线上环境。