https://developer.android.com/training/displaying-bitmaps/index.html
学习应该使用怎样的通用技术处理和加载bitmap对象来保持UI响应灵敏避免超过应用内存限制。如果不小心使用,bitmap会很快消耗掉可用的内存导致应用内存溢出的crash
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
有很多原因导致在Android应用中加载bitmap非常棘手:
- 移动设备系统资源有限。Android设备一个应用只有16MB的可用内存。The Android Compatibility Definition Document (CDD) Section 3.7. Virtual Machine Compatibility 列出了不同屏幕大小和屏幕密度需要的最小内存。应用程序应该进行优化,以执行最小的内存限制。然而,要知道是很多设备配置了更高的限制
- bitmap消耗很多的内存,尤其是图像信息丰富多彩的像照片。比如,Galaxy Nexus拍照的图片有2592x1936个像素(5万个像素)。如果bitmap是使用ARGB_8888配置的话(Android 2.3之前是默认的),那么加载这个图片会花费大约19MB的内存(2592x1936x4 bytes),会立即耗尽某些设备的app内存
- Android应用的UI通常需要一次性加载几个bitmap。像ListView,GridView,ViewPage经常会一次性on-screen很多bitmap并且off-screen有许多等待手指滑动时显示