一种图片加载方法及装置制造方法及图纸

技术编号:15878620 阅读:54 留言:0更新日期:2017-07-25 16:36
本申请公开了一种图片加载方法及装置,可将解码所得的图片数据缓存在本机堆内存,即Native堆内存中,以便图片加载时复用,这样,由于Native堆内存不计算在应用进程的Java堆内存内,因而可有效降低Java堆内存的压力,降低OOM的触发概率,同时,还可达到更好地利用堆内存实现图片缓存,以提高图片加载效率并减少系统GC的效果。

Picture loading method and device

The invention discloses a device and a method for loading pictures, pictures can be decoded data cache the heap memory in the machine, namely Native heap memory, so that the image loading time multiplexing, such as Native, heap memory is not included in the application process of Java heap memory, which can effectively reduce the Java heap memory pressure and reduce the probability of triggering OOM, at the same time, also can achieve better use of heap memory to achieve image cache, in order to improve the efficiency and reduce the image loading system GC effect.

【技术实现步骤摘要】
一种图片加载方法及装置
本申请涉及图片处理
,尤其涉及一种图片加载方法及装置。
技术介绍
对于安卓设备来说,在进行图片加载时,由于解码图片需要占用应用进程大量的Java堆内存,且,安卓系统的应用进程都有一定大小限制,因而当应用进程的Java堆内存使用率较高时,极易出现堆内存不足的现象,从而触发OOM(OutOfMemory,内存耗尽)。为了解决这一问题,目前可采用图片缓存的方式来减少图片解码,以实现对解码所得图片数据的复用,进而降低Java堆内存的使用率。例如,在从网络或本地资源解码出Bitmap(位图)对象后,可通过使用LinkedHashMap(基于链表、哈希实现的Map数据结构)实现LRU(LeastRecentlyUsed,近期最少使用算法)缓存管理,即,将最近使用到的Bitmap对象用强引用保存起来(保存到LinkedHashMap中),当缓存数量达到预定值的时候,将不经常使用的Bitmap对象删除,从而实现对Bitmap对象的复用,提高用户的应用体验。但是,由于在采用现有的图片缓存方式来实现解码所得图片数据的复用时,仍是在Java层解码出Bitmap对象,并将解码所本文档来自技高网...
一种图片加载方法及装置

【技术保护点】
一种图片加载方法,其特征在于,包括:在对图片进行加载时,判断本机堆内存Native堆内存中是否缓存有该图片的解码数据;若是,则从Native堆内存中获取该图片的解码数据,并基于获取到的解码数据实现该图片的加载;若否,则从存储有该图片的存储空间处获取并加载该图片,并将加载该图片的过程中所得到的该图片的解码数据缓存到Native堆内存中。

【技术特征摘要】
1.一种图片加载方法,其特征在于,包括:在对图片进行加载时,判断本机堆内存Native堆内存中是否缓存有该图片的解码数据;若是,则从Native堆内存中获取该图片的解码数据,并基于获取到的解码数据实现该图片的加载;若否,则从存储有该图片的存储空间处获取并加载该图片,并将加载该图片的过程中所得到的该图片的解码数据缓存到Native堆内存中。2.如权利要求1所述的方法,其特征在于,判断Native堆内存中是否缓存有该图片的解码数据,包括:判断是否能够从本机堆内存缓存记录信息中,获取到与该图片的解码数据相对应的记录数据,若判断结果为是,则确定Native堆内存中缓存有该图片的解码数据。3.如权利要求1或2所述的方法,其特征在于,在判定Native堆内存中缓存的该图片的解码数据有效时,则从Native堆内存中获取该图片的解码数据。4.如权利要求3所述的方法,其特征在于,判断Native堆内存中缓存的该图片的解码数据是否有效,包括:判断本机堆内存缓存记录信息中的、与该图片的解码数据相对应的记录数据中的本机堆内存指针是否为有效指针,若判断结果为是,则确定Native堆内存中缓存的该图片的解码数据有效;其中,所述本机堆内存缓存记录信息中的每一记录数据中的本机堆内存指针用于指明该记录数据所对应的解码数据在Native堆内存中的存储地址。5.如权利要求2所述的方法,其特征在于,所述本机堆内存缓存记录信息位于Java堆内存中,且,所述本机堆内存缓存记录信息中的各记录数据采用近期最少使用算法LRU进行管理。6.如权利要求1或2所述的方法,其特征在于,该图片的解码数据为对该图片进行解码所得到的位图Bitmap对象的像素数组数据;从Native堆内存中获取该图片的解码数据,并基于获取到的解码数据实现该图片的加载,包括:判断画布ImageView当前显示的Bitmap对象是否满足该图片的解码数据所需的重用条件;若满足,则将Native堆内存中缓存的、对该图片进行解码所得到的Bitmap对象的像素数组数据拷贝到ImageView当前显示的Bitmap对象中,得到新的Bitmap对象,并将新的Bitmap对象渲染到ImageView中,以实现该图片的加载;若不满足,则从位图文件池中获取一符合该图片的解码数据所需的重用条件的Bitmap对象、或者创建一符合该图片的解码数据所需的重用条件的Bitmap对象,并将Native堆内存中缓存的、对该图片进行解码所得到的Bitmap对象的像素数组数据拷贝到获取到的或者创建的Bitmap对象中,得到新的Bitmap对象,并将新的Bitmap对象渲染到ImageView中,以实现该图片的加载;其中,所述位图文件池位于Java堆内存中、且其引用方式为软引用。7.如权利要求6所述的方法,其特征在于,若确定ImageView当前显示的Bitmap对象不满足该图片的解码数据所需的重用条件,则所述方法还包括:将ImageView当前显示的Bitmap对象存放至所...

【专利技术属性】
技术研发人员:李锦敏冯显桂余龙飞王远秋
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1