内容概述

[翻译]开发文档:android Bitmap的高效使用

本文内容来自开发文档“Traning > Displaying Bitmaps Efficiently”,包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存。

Bitmap的处理和加载非常重要,这关系到app的流畅运行和内存占用,如果方法不当,很容易导致界面卡顿和OOM。其中的原因大致有:

  • android系统对进程的内存分配限制,移动设备的配置较低。

  • Bitmap会消耗很大内存。比如相机拍下的 2592x1936 像素的照片,以ARGB_8888 格式一次加载到内存,将占据19M(259219364 bytes)的内存!

  • 通常像ListView,GridView,ViewPager这样的UI元素会同时显示或预加载多个View,这导致内存中同时需要多个Bitmaps。

下面从几个方面来分析如何高效的使用图片。

高效地加载大图

原始图片和最终显示它的View对应,一般要比显示它的View的大小要大,一些拍摄的照片甚至要比手机的屏幕分辨率还要大得多。
原则上“显示多少加载多少”,没有必要加载一个分辨率比将要显示的分辨