高效显示Bitmap - 简介
这一章节主要是学习下,使用一些常见的技术手段,在我们处理和加载
Bitmap
对象的时候,让我们应用的UI界面组件正常响应显示和避免超出应用的内存限制大小,如果你在进行这项操作的时候不加小心,那么bitmaps会很快的就消耗完应用可用的内存,并会引发如下所示的严重的异常并导致你的应用崩溃!
java.lang.OutofMemoryError: bitmap size exceeds VM budget
.
主要有如下几种原因导致在应用程序中加载bitmaps是一件非常棘手的事
一、
移动设备对于系统资源的使用一般是有约束的。在Android设备中每个单独的应用最多可使用16M的内存资源,
Android Compatibility Definition Document
(CDD)
文档3.7节中对各种屏幕大小和密度的设备每个单独应用最多能使用的内存大小都有定义,各种应用应该在内存大小限制的前提下充分的去使用内存资源 。然而记住许多设备的配置又无形中增加了难度

二、
Bitmaps会占用很多的内存,尤其是像照片之类的富图像,在
Galaxy Nexus
设备上照出来的照片就有
2592x1936
个像素(500万像素)那么大,如果这种位图的配置是
ARGB_8888
(从Android2.3开始),如果把它载入内存的话将会耗费19M(2592*1936*4bytes)的内存,在一些设备上瞬间就把内存耗尽。
三、
Android应用UI元件往往需要一次性的显示好几张位图, 像
ListView
、
GridView
和
ViewPager
一般都需要一次性的载入几张位图,当用户滑动这类UI元件时可能需要载入更多