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

技术编号:30188357 阅读:11 留言:0更新日期:2021-09-29 08:25
本发明专利技术公开了一种加载图片的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:检测图片加载环境是否为目标环境;其中,所述目标环境为原生环境或者非原生环境;若是,则从所述目标环境对应的第一图片加载库的内存缓存中获取目标图片;若否,则从除所述目标环境以外的环境对应的第二图片加载库的内存缓存中获取目标图片;加载所述目标图片。该实施方式能够解决重复保存图片导致增加内存负担的技术问题。负担的技术问题。负担的技术问题。

【技术实现步骤摘要】
一种加载图片的方法和装置


[0001]本专利技术涉及计算机
,尤其涉及一种加载图片的方法和装置。

技术介绍

[0002]目前,大多数应用程序中都存在混合开发(一部分页面使用原生图片加载库开发、一部分页面使用非原生图片加载库开发),对于原生页面开发早已有较多成熟的图片加载库(比如fresco、glide、picasso等)可使用,但非原生图片加载库(比如Flutter)只支持内存缓存,当用户下次进入同一个页面并显示相同图片时,会重新下载图片并加载,相同的图片在内存中会保存两份,这会严重增加内存的负担。
[0003]在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:
[0004]原生图片加载库只能在安卓页面中使用,内存中已加载的图片无法共享给Flutter页面使用,Flutter页面中加载到内存中的图片也无法共享给原生页面显示;而且Flutter中的图片只支持内存缓存,没有文件缓存逻辑。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供一种加载图片的方法和装置,以解决重复保存图片导致增加内存负担的技术问题。
[0006]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种加载图片的方法,包括:
[0007]检测图片加载环境是否为目标环境;其中,所述目标环境为原生环境或者非原生环境;
[0008]若是,则从所述目标环境对应的第一图片加载库的内存缓存中获取目标图片;
[0009]若否,则从除所述目标环境以外的环境对应的第二图片加载库的内存缓存中获取目标图片;
[0010]加载所述目标图片。
[0011]可选地,从所述目标环境对应的第一图片加载库的内存缓存中获取目标图片,包括:
[0012]判断所述目标环境对应的第一图片加载库的内存缓存中是否存在目标图片;
[0013]若是,则直接获取所述目标图片;
[0014]若否,则将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,并获取所述目标图片。
[0015]可选地,将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,包括:
[0016]将所述目标图片转换为字节数组;
[0017]通过方法通道将所述目标图片的字节数组从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存。
[0018]可选地,将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,包括:
[0019]判断除所述目标环境以外的环境对应的第二图片加载库的内存缓存中是否存在所述目标图片;
[0020]若是,则将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存;
[0021]若否,则从所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中获取所述目标图片,并将所述目标图片存储到所述第一图片加载库的内存缓存。
[0022]可选地,所述第一图片加载库的文件缓存与所述第二图片加载库的文件缓存的存储路径相同。
[0023]可选地,从所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中获取所述目标图片,包括:
[0024]判断所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中是否存在所述目标图片;
[0025]若是,则从所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中获取所述目标图片;
[0026]若否,则根据所述目标图片的统一资源定位符,将所述目标图片下载至所述第一图片加载库的文件缓存。
[0027]可选地,所述原生环境对应的原生图片加载库为fresco、glide或者picasso;所述非原生环境对应的非原生图片加载库为flutter。
[0028]另外,根据本专利技术实施例的另一个方面,提供了一种加载图片的装置,包括:
[0029]获取模块,用于检测图片加载环境是否为目标环境;其中,所述目标环境为原生环境或者非原生环境;若是,则从所述目标环境对应的第一图片加载库的内存缓存中获取目标图片;若否,则从除所述目标环境以外的环境对应的第二图片加载库的内存缓存中获取目标图片;
[0030]加载模块,用于加载所述目标图片。
[0031]可选地,所述获取模块还用于:
[0032]判断所述目标环境对应的第一图片加载库的内存缓存中是否存在目标图片;
[0033]若是,则直接获取所述目标图片;
[0034]若否,则将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,并获取所述目标图片。
[0035]可选地,所述获取模块还用于:
[0036]将所述目标图片转换为字节数组;
[0037]通过方法通道将所述目标图片的字节数组从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存。
[0038]可选地,所述获取模块还用于:
[0039]判断除所述目标环境以外的环境对应的第二图片加载库的内存缓存中是否存在所述目标图片;
[0040]若是,则将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的
内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存;
[0041]若否,则从所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中获取所述目标图片,并将所述目标图片存储到所述第一图片加载库的内存缓存。
[0042]可选地,所述第一图片加载库的文件缓存与所述第二图片加载库的文件缓存的存储路径相同。
[0043]可选地,所述获取模块还用于:
[0044]判断所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中是否存在所述目标图片;
[0045]若是,则从所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓存中获取所述目标图片;
[0046]若否,则根据所述目标图片的统一资源定位符,将所述目标图片下载至所述第一图片加载库的文件缓存。
[0047]可选地,所述原生环境对应的原生图片加载库为fresco、glide或者picasso;所述非原生环境对应的非原生图片加载库为flutter。
[0048]根据本专利技术实施例的另一个方面,还提供了一种电子设备,包括:
[0049]一个或多个处理器;
[0050]存储装置,用于存储一个或多个程序,
[0051]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的方法。
[0052]根据本专利技术实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种加载图片的方法,其特征在于,包括:检测图片加载环境是否为目标环境;其中,所述目标环境为原生环境或者非原生环境;若是,则从所述目标环境对应的第一图片加载库的内存缓存中获取目标图片;若否,则从除所述目标环境以外的环境对应的第二图片加载库的内存缓存中获取目标图片;加载所述目标图片。2.根据权利要求1所述的方法,其特征在于,从所述目标环境对应的第一图片加载库的内存缓存中获取目标图片,包括:判断所述目标环境对应的第一图片加载库的内存缓存中是否存在目标图片;若是,则直接获取所述目标图片;若否,则将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,并获取所述目标图片。3.根据权利要求2所述的方法,其特征在于,将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,包括:将所述目标图片转换为字节数组;通过方法通道将所述目标图片的字节数组从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存。4.根据权利要求2所述的方法,其特征在于,将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存,包括:判断除所述目标环境以外的环境对应的第二图片加载库的内存缓存中是否存在所述目标图片;若是,则将所述目标图片从除所述目标环境以外的环境对应的第二图片加载库的内存缓存传递至所述目标环境对应的第一图片加载库的内存缓存;若否,则从所述第一图片加载库的文件缓存或者所述第二图片加载库的文件缓...

【专利技术属性】
技术研发人员:徐宏伟
申请(专利权)人:北京京东世纪贸易有限公司
类型:发明
国别省市:

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

1