Android Bitmap加载大图及保存图片

本文记录了Bitmap加载大图的一些常规操作和知识,都是从平常经验积累及参考大佬文章,在此做个笔记方便日后查阅

我们都知道Android加载大图的时候经常出现

java.lang.OutofMemoryError

内存溢出OOM,尤其出现在跟后端联调的时候,如果不对大的图片处理的话就会出现上面的情况,所以面对大的图片,我们需要对其图片进行适当的压缩,在不影响图片显示的情况下,尽量保证不出现OOM的异常.

2. 概述

在开发中,对于图片的操作,稍有不慎,可能就会消耗大量的内存,导致程序崩溃,所以了解一种通用的技术去处理和加载图片,同时保证UI流畅避免OOM现象,是非常有必要的。那么为什么在Android中对于图片的处理会如此棘手呢?主要有以下一些原因:

  • 通常情况下,移动设备的内存资源是有限的,Android系统会根据手机的屏幕大小和密度,为每个程序设置一个最大内存限制,应用程序消耗的内存不能超过这个最大内存限制,否则就会出现OOM现象。当然,这个内存限制是跟手机配置相关联的。
  • 图片的操作会消耗大量的内存,特别是细节丰富的图片,例如照片。以Galaxy Nexus相机为例子,它拍摄一张2592x1936像素的照片,如果使用的位图配置是ARGB_8888(默认从Android 2.3开始),那么这张照片加载到内存,大约会消耗19MB的内存(2592 x 1936 x 4字节),仅仅是图片消耗内存的数值可能已经超过了某些设备的内存限制
  • Android的UI经常会一次加载多张图片,例如,ListView、GridView、ViewPager等等

你可能感兴趣的:(android,android,studio,Bitmap)