代码改变世界

高效使用位图

2013-05-18 10:34  HalZhang  阅读(1989)  评论(2编辑  收藏  举报

如何有效的使用位图,避免OOM,Android Training说了很明白了,主要有四点:

1、有效的利用大图片

根据实际应用情况,加载位图,不要浪费。比如,在一个100*100的ImageView,完全加载一个1000*1000的位图,这就真的很浪费了。

应该根据实际大小需求,计算出inSampleSize再去Decode位图,这样很省内存。

2、在非UI线程处理位图

这个大家都懂,不多说。

3、使用缓存

利用LruCache和DiskLruCache,两者结合使用,就像多级缓存一样。在实际使用中,根据需要计算出缓存空间大小,同事避免类似横竖屏切换,界面重新初始化,导致缓存失效。

4、有效管理位图内存

这个需要对不同的系统版本采用不同的处理方法。2.3.3以下系统,bitmap的数据和对象是储存在两个不同的地方,我们需要自己调用recycle进行回收。3.0以上可以reused位图内存。

 

画了一个图,希望读者更好理解。

 

 

说什么都是虚的,注意实际开发中灵活运用吧。

最近Google I/O 2013 很多干货,整理了一个播放列表:http://t.cn/zTsgFb3 youtube上的,需要穿越,大家懂的。

欢迎大家交流,转载请注明出处!

参考:http://developer.android.com/training/displaying-bitmaps/index.html

------END-----