一、为什么Bitmap需要高效加载?
现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制,只有
小几十M,如16M,这导致加载Bitmap
的时候很容易出现内存溢出。如下异常信
息,便是在开发中经常需要的:
java.lang.OutofMemoryError:bitmap size exceeds VM budget
为了解决这个问题,就出现了Bitmap的高效加载策略。其实核心思想很简单。假设
通过ImageView
来显示图片,很多时候ImageView
并没有原始图片的尺寸那么大,
这个时候把整个图片加载进来后再设置给ImageView
,显然是没有必要的,因为
ImageView
根本没办法显示原始图片。这时候就可以按一定的采样率来将图片缩小
后再加载进来,这样图片既能在ImageView
显示出来,又能降低内存占用从而在一
定程度上避免OOM
,提高了Bitmap
加载时的性能
二、Bitmap高效加载的具体方式
1.加载Bitmap的方式
Bitmap在Android中指的是一张图片。通过BitmapFactory类提供的四类方法:
decodeFile
,decodeResource
,decodeStream
和decodeB