十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1. 概述
成都创新互联从2013年开始,先为琼中黎族等服务建站,琼中黎族等地企业,进行企业商务咨询服务。为琼中黎族企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。在 Android 应用程序的设计中,几乎不可避免地都需要加载和显示图片,由于不同的图片在大小上千差万别,有些图片可能只需要几十KB的内存空间,有些图片却需要占用几十MB的内存空间;或者一张图片不需要占用太多的内存,但是需要同时加载和显示多张图片。
在这些情况下,加载图片都需要占用大量的内存,而 Android系统分配给每个进程的内存空间是有限的,如果加载的图片所需要的内存超过了限制,进程就会出现 OOM,即内存溢出。
本文针对加载大图片或者一次加载多张图片等两种不同的场景,采用不同的加载方式,以尽量避免可能导致的内存溢出问题。
下面话不多说了,来一起看看详细的介绍吧
2. 加载大图片
有时一张图片的加载和显示就需要占用大量的内存,例如图片的大小是 2592x1936 ,同时采用的位图配置是 ARGB_8888 ,其在内存中需要的大小是 2592x1936x4字节,大概是 19MB。仅仅加载这样一张图片就可能会超过进程的内存限制,进而导致内存溢出,所以在实际使用时肯定无法直接加载到内存中。
为了避免内存溢出,根据不同的显示需求,采取不同的加载方式:
2.1 图片压缩显示
图片的压缩显示指的是对原图片进行长宽的压缩,以减少图片的内存占用,使其能够在应用上正常显示,同时保证在加载和显示过程中不会出现内存溢出的情况。
BitmapFactory 是一个创建Bitmap 对象的工具类,使用它可以利用不同来源的数据生成Bitamp对象,在创建过的过程中还可以对需要生成的对象进行不同的配置和控制,BitmapFactory的类声明如下:
Creates Bitmap objects from various sources, including files, streams,and byte-arrays.