CN107480169B - 图片加载方法、终端和计算机可读存储介质 - Google Patents

图片加载方法、终端和计算机可读存储介质 Download PDF

Info

Publication number
CN107480169B
CN107480169B CN201710508961.7A CN201710508961A CN107480169B CN 107480169 B CN107480169 B CN 107480169B CN 201710508961 A CN201710508961 A CN 201710508961A CN 107480169 B CN107480169 B CN 107480169B
Authority
CN
China
Prior art keywords
picture
memory
loaded
preset
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710508961.7A
Other languages
English (en)
Other versions
CN107480169A (zh
Inventor
周培园
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Jingri Fangfang Information Technology Co ltd
Original Assignee
Nanjing Car Chain Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Car Chain Technology Co Ltd filed Critical Nanjing Car Chain Technology Co Ltd
Priority to CN201710508961.7A priority Critical patent/CN107480169B/zh
Publication of CN107480169A publication Critical patent/CN107480169A/zh
Application granted granted Critical
Publication of CN107480169B publication Critical patent/CN107480169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Telephone Function (AREA)

Abstract

本发明公开了一种图片加载方法、终端和计算机可读存储介质,该方法可在图片缓存内存的预设内存中不存在待加载图片时;判断预设内存中当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;有则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;否则从图片缓存内存中为待加载图片分配内存,获取待加载图片,在分配的内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存,本发明以对图片内存缓存中已有图片内存的复用,改善了现有技术中图片加载器不停释放和分配内存造成的内存抖动的问题,以及内存抖动带来的不良影响,提升了用户的体验。

Description

图片加载方法、终端和计算机可读存储介质
技术领域
本发明涉及终端技术领域,尤其涉及一种图片加载方法、终端和计算机可读存储介质。
背景技术
随着智能手机的发展,越来越多的人选择手机来进行拍照,这就诞生了很多的图片类APP,为了提高这类APP的用户体验,现有的图片加载组件都使用二级缓存的方式进行图片加载,如图2所示,加载图片的步骤如下:
1、查询内存缓存中是否有需要加载的该图片,没有则进入下一步;
2、查询磁盘缓存是否有需要加载的该图片,没有则进入下一步;
3、下载图片;
4、缓存图片到内存缓存;
5、保存图片到磁盘缓存。
在现有技术中,当需要加载图片的时候,首先查看内存缓存是否有对应的图片,如果有,则直接返回图片信息;如果内存缓存没有,则查看磁盘缓存,磁盘缓存如果有图片信息,则将磁盘缓存的图片返回到图片加载器,并放入内存缓存中;如果磁盘缓存也没有图片信息,则需要到图片服务器进行图片下载,下载完成后放入内存缓存,并存入磁盘缓存中。
其中,读取内存缓存和磁盘缓存的速度有很大的差别,内存缓存相当于手机的RAM,读取速度飞快,磁盘缓存相当于手机的SD卡,需要进行IO操作,速度相对较慢。
为了提升图片类APP的用户体验,现有的图片加载器都是配置一块内存缓存区域,用来存储内存中的图片,以提高图片二次加载的速度;当内存缓存达到上限的时候,就会通过一定的算法来释放已有的缓存资源。例如使用LRU(先进先出)策略,当用户浏览的图片的内存大于配置的内存缓存后,会回收最先存入的图片内存,以便让新的图片能够存入内存缓存中。
在内存缓存达到上限后,用户再浏览图片,就会不停的触发缓存区域的释放和分配操作,而不停的释放和分配内存很容易造成手机的内存抖动,内存抖动就会引发一系列的性能问题,包括GC(垃圾收集)、ANR(界面无响应)、手机卡顿、OOM(内存溢出)、内存碎片等,造成了用户体验的不友好。
发明内容
本发明的主要目的在于提出一种图片加载方法、终端和计算机可读存储介质,旨在解决现有技术中图片在加载时易发生手机内存抖动,引发垃圾收集、界面无响应、手机卡顿、内存溢出、内存碎片等的问题。
为实现上述目的,本发明提供一种图片加载方法,包括:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片;
若存在,则从预设内存中获取待加载图片进行显示;
若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;
否则,从图片缓存内存中为待加载图片分配内存,获取待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
可选的,预设内存包括活跃内存和复用内存;活跃内存包括当前在屏幕上显示的图片使用的内存;复用内存包括屏幕上显示的图片在移出屏幕后使用的内存;
检查图片缓存内存的预设内存中是否存在待加载图片;若存在,则从预设内存中获取待加载图片进行显示包括:
检查活跃内存中是否存在待加载图片,若存在,则从活跃内存中获取待加载图片进行显示;若不存在,则检查复用内存中是否存在待加载图片,若存在,则从复用内存中获取待加载图片进行显示;
若不存在,则判断预设内存中当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片包括:
若复用内存中不存在待加载图片,则判断复用内存中是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,若存在,则获取第一图片的内存,获取待加载图片,以待加载图片更新所述第一图片的内存,显示待加载图片。
可选的,在图片加载的过程中,还包括:
当屏幕上的图片移出屏幕之后,计算移出屏幕的图片的尺寸信息;
将移出屏幕的图片的内存与该图片的尺寸信息对应地加入到复用内存中,在活跃内存中删除移出屏幕的图片的映射。
可选的,复用内存中设置有图片池,图片池用于对应地存储移出屏幕的图片与该图片的尺寸信息;图片池中的图片根据自身的尺寸信息被划分到互不重叠的图片尺寸范围中;各个图片尺寸范围设置有对应的图片列表;
将移出屏幕的图片的内存与该图片的尺寸信息对应地加入到复用内存中包括:
判断移出屏幕的图片的尺寸信息是否与图片尺寸范围中的一个图片尺寸范围匹配;
若是,将移出屏幕的图片的内存加入匹配的图片尺寸范围对应的图片列表中,否则根据移出屏幕的图片的尺寸信息,在图片池中生成一个新的图片尺寸范围,将移出屏幕的图片的内存加入新的图片尺寸范围的图片列表中。
可选的,图片尺寸范围与图片列表以键值对的方式存储。
可选的,图片缓存内存的大小为终端当前可用内存与预设比例值的乘积。
为实现上述目的,本发明还提供一种终端,终端包括处理器、存储器及通信总线;
通信总线用于实现处理器和存储器之间的连接通信;
处理器用于执行存储器中存储的图片加载程序,以实现以下步骤:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片;
若存在,则从预设内存中获取待加载图片进行显示;
若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;
否则,从图片缓存内存中为待加载图片分配内存,获取待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
可选的,预设内存包括活跃内存和复用内存;活跃内存包括当前在屏幕上显示的图片使用的内存;复用内存包括屏幕上显示的图片在移出屏幕后使用的内存;
处理器用于执行存储器中存储的图片加载程序,以实现以下步骤:
检查活跃内存中是否存在待加载图片,若存在,则从活跃内存中获取待加载图片进行显示;
若不存在,则检查复用内存中是否存在待加载图片,若存在,则从复用内存中获取待加载图片进行显示;
若复用内存中不存在待加载图片,则判断复用内存中是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,若存在,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片。
可选的,图片缓存内存的大小为终端当前可用内存与预设比例值的乘积。
为实现上述目的,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片;
若存在,则从预设内存中获取待加载图片进行显示;
若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;
否则,从图片缓存内存中为待加载图片分配内存,获取待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
本发明提供了一种图片加载方法、终端和计算机可读存储介质,当终端需要加载图片时,可以在图片缓存内存的预设内存中不存在待加载图片时;判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;否则,从图片缓存内存中为待加载图片分配内存,获取待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存,本发明以对图片内存缓存中已有的图片的内存的复用,改善了现有技术中图片加载器不停释放和分配内存造成的内存抖动的问题,从而改善了浏览图片的卡顿、OOM、ANR、内存碎片的问题,大大提升了用户的体验。
附图说明
图1为实现本发明各个实施例的一个可选的移动终端的硬件结构示意图;
图2是现有技术中的一种图片加载原理示意图;
图3是本发明的一种图片加载方法的流程图;
图4是本发明的活跃内存、复用内存、图片缓存内存以及终端当前可用内存的关系示意图;
图5是本发明中计算复用内存和活跃内存大小的方法的流程图;
图6是本发明中屏幕上显示的图片与移出屏幕的图片的转换示意图;
图7是本发明的图片尺寸范围与对应的图片列表的存储示意图;
图8是本发明的图片尺寸范围与图片数量的对应关系的示意图;
图9是本发明的一种下载图片到图片缓存内存中的方法;
图10是本发明的一种终端的结构图;
图11是本发明中终端实现图片加载的流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。
后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
请参阅图1,其为实现本发明各个实施例的一种移动终端的硬件结构示意图,该移动终端100可以包括:RF(RadIio Frequency,射频)单元101、WiFi模块102、音频输出单元103、A/V(音频/视频)输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、处理器110、以及电源111等部件。本领域技术人员可以理解,图1中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图1对移动终端的各个部件进行具体的介绍:
射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将基站的下行信息接收后,给处理器110处理;另外,将上行的数据发送给基站。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA2000(CodeDivision Multiple Access 2000,码分多址2000)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、TD-SCDMA(Time Division-Synchronous CodeDivision Multiple Access,时分同步码分多址)、FDD-LTE(Frequency DivisionDuplexing-Long Term Evolution,频分双工长期演进)和TDD-LTE(Time DivisionDuplexing-Long Term Evolution,分时双工长期演进)等。
WiFi属于短距离无线传输技术,移动终端通过WiFi模块102可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图1示出了WiFi模块102,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
音频输出单元103可以在移动终端100处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将射频单元101或WiFi模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103可以包括扬声器、蜂鸣器等等。
A/V输入单元104用于接收音频或视频信号。A/V输入单元104可以包括图形处理器(Graphics Processing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或WiFi模块102进行发送。麦克风1042可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风1042接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。麦克风1042可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
移动终端100还包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1061的亮度,接近传感器可在移动终端100移动到耳边时,关闭显示面板1061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
显示单元106用于显示由用户输入的信息或提供给用户的信息。显示单元106可包括显示面板1061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1061。
用户输入单元107可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元107可包括触控面板1071以及其他输入设备1072。触控面板1071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1071上或在触控面板1071附近的操作),并根据预先设定的程式驱动相应的连接装置。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,并能接收处理器110发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1071。除了触控面板1071,用户输入单元107还可以包括其他输入设备1072。具体地,其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种,具体此处不做限定。
进一步的,触控面板1071可覆盖显示面板1061,当触控面板1071检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板1061上提供相应的视觉输出。虽然在图1中,触控面板1071与显示面板1061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板1071与显示面板1061集成而实现移动终端的输入和输出功能,具体此处不做限定。
接口单元108用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元108可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端100和外部装置之间传输数据。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器109可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。本发明的存储器109中可以存储图片加载程序。
处理器110是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器109内的软件程序和/或模块,以及调用存储在存储器109内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器110可包括一个或多个处理单元;优选的,处理器110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。本发明的处理器110可以运行存储在上述存储器109中的图片加载程序,以实现以下步骤:当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片;若存在,则从预设内存中获取待加载图片进行显示;若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;否则,从图片缓存内存中为待加载图片分配内存,获取待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
移动终端100还可以包括给各个部件供电的电源111(比如电池),优选的,电源111可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管图1未示出,移动终端100还可以包括蓝牙模块等,在此不再赘述。
基于上述移动终端硬件结构,提出本发明方法各个实施例。
实施例一:
在本实施例中实现下述步骤的终端包括但不限于移动终端,如智能手机、平板。本实施例中终端的操作系统包括但不限于安卓操作系统和IOS操作系统。本实施例示出了一种图片加载方法,可以在需要加载图片的时候,先查看图片缓存内存的预设内存中是否已经存在相同的图片,若存在,则直接提取图片进行显示即可,不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;若有,则获取第一图片的内存,以待加载图片更新第一图片的内存,显示待加载图片;由此,实现了对未在屏幕上显示的图片的内存的复用,避免了对缓存区域的释放和分配操作频发发生,降低了内存抖动的发生概率。
参见图3,本实施例的图片加载方法包括:
S301、当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片;
S302、若存在,则从预设内存中获取待加载图片进行显示;
S303、若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;
S304、若有,则获取第一图片的内存,下载待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;
S305、否则,从缓存内存中为待加载图片分配内存,下载待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
现有的图片二级加载方案中,图片的存储分为内存缓存与磁盘缓存,本实施例的上述方案是针对现有的图片加载策略中的内存缓存策略进行的改进。
在实际中,待加载图片包括但不限于终端的相机拍摄的图片,终端下载的图片、截屏得到的图片等等。终端加载图片的过程可以发生在用户浏览网页的场景下,也可以发生在用户浏览本地图库的场景下,本实施例对此没有限定。
在实际中,终端的可用内存随着应用的开启、关闭等在实时发生变化,若是将图片缓存内存设置为固定的值,那么当终端系统的可用内存变小时,因为图片缓存内存固定,留给终端处理其他业务的内存变小,不利于终端流畅运行,而当终端系统的可用内存变大时,图片缓存内存固定,浪费了多余的终端可用内存。为了平衡终端可用内存与图片缓存内存,本实施例中,对图片缓存内存采用动态分配的方式,可以根据终端当前可用内存的大小动态地设置图片缓存内存的大小,当终端当前可用内存变大(或变小),图片缓存内存可以适当变大(或变小)。进一步的,可以设置一个预设比例值,如0.3,图片缓存内存的大小为终端当前可用内存与预设比例值的乘积。其中,预设比例值可以根据终端的实际情况设置。且当终端的需求不同,预设比例值也可以随之改变,本实施例对此没有限制。
进一步的,检查图片缓存内存的预设内存中是否存在待加载图片的方法包括:对待加载图片的识别信息与预设内存中图片的识别信息进行匹配,匹配成功,则预设内存中存在待加载图片。其中,一个图片的识别信息包括图片链接、图片地址、图片指纹中的至少一种。
当预设内存中没有该待加载图片时,要在预设内存中存储该待加载图片,则需要为该待加载图片分配内存。本实施例中,为了避免对缓存内存的进行频繁的释放和分配操作,当预设内存中不存在待加载图片时,先判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;存在,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片,由此,本实施例中以对第一图片的内存的复用,替代了现有技术中释放内存和分配内存达到的效果。具体的,确定待加载图片的大小尺寸,将待加载图片的大小尺寸与预设内存中存储的当前未在屏幕上显示的图片的大小尺寸进行比较,尺寸差在预设尺寸范围差内的图片为第一图片,获取第一图片的内存,获取待加载图片,以该待加载图片更新该第一图片的内存。以该待加载图片更新该第一图片的内存的具体方式可以是擦除第一图片的内存中该第一图片的信息,之后,在该第一图片的内存上绘制待加载图片的图片信息。其中,满足尺寸差在预设尺寸范围差内的第一图片的数量可能是多个,若待加载图片为一个,则需从多个第一图片中选择一个。本实施例中,待加载图片的数量可以是至少一张。进一步的,为了能对待加载图片进行完整的存储,第一图片的大小实际上应该不小于待加载图片的大小。
其中,当预设内存中没有待加载图片时,需要从有该待加载图片的地方获取该待加载图片存入预设内存中,显示待加载图片。其中,在S304中获取待加载图片的方法包括:判断终端的磁盘缓存中是否有该待加载图片;其中,具体的判断方式与上述检查预设内存中是否存在待加载图片的方法类似。当判断结果为是,则需要从磁盘内存中读取该待加载图片写入预设内存中;当判断结果为否,则需要下载该待加载图片。其中,下载待加载图片的方式包括但不限于通过运营商的无线网络下载,通过WiFi的方式下载,通过蓝牙的方式下载等等。
进一步的,在预设内存中不存在待加载图片,且预设内存存储的未显示在屏幕的图片中不存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片时,需要从图片缓存内存中新分配内存给待加载图片。其中,可以理解的是,分配的内存属于图片缓存内存中非预设内存的部分。所以本实施例中,预设内存的大小小于图片缓存内存的大小。其中,S305中获取待加载图片的方法参考上述S304中获取待加载图片的方法步骤。在S305中,在分配的内存中绘制待加载图片的图片信息,显示该待加载图片的同时,需要将待加载图片的内存划分为预设内存,由此预设内存中就存有该待加载图片。
进一步的,为了便于对待加载图片的加载,本实施例将预设内存划分为活跃内存和复用内存;在图4中,以图片缓存内存为终端当前可用内存的0.4为例,示出了本实施例的活跃内存和复用内存、图片缓存内存以及终端当前可用内存的关系,如图4所示活跃内存和复用内存的和小于图片缓存内存。
本实施例中,对活跃内存和复用内存有以下的定义:活跃内存包括当前在屏幕上显示的图片使用的内存;复用内存包括屏幕上显示的图片在移出屏幕后使用的内存。假设活跃内存中当前在屏幕上显示的图片有3张,每张3M,则可以预见本实施例中活跃内存为9M,若复用内存中存储的图片有9张,每张3M,则可以预见复用内存的大小是27M。可以预见活跃内存和复用内存的大小并不是固定不变的,都是随着各自存储的图片的数量变化的,当活跃内存中在屏幕上显示的图片数量减少,活跃内存的大小自然会变小。
下面结合图5,对本实施例提供的一种活跃内存和复用内存的计算方法进行示例说明。
如图5所示,计算活跃内存和复用内存的方法包括:
S501、用户设置图片缓存内存的比例;例如设置为图3所示的0.4;
S502、计算终端屏幕的宽和高;
S503、计算屏幕大小,屏幕大小=宽*高*AGRB8888占用的内存值;
其中,AGRB8888只是图片的一种色彩格式,本实施例中计算屏幕大小时采用的色彩格式还可以是其他的色彩格式,如ARGB_4444、RGB_565等等,计算使用的色彩格式根据终端实际使用的色彩格式决定。上述计算出的屏幕大小是活跃内存的最大值。
S504、计算复用内存的大小,在复用内存才被划分出来的时候,复用内存中一般没有内容,大小为0;
S505、计算活跃内存的大小,活跃内存的大小根据终端当前显示的图片的大小决定。
根据上述对活跃内存和复用内存的定义,可以知道,当复用内存被划分后,一开始其中是没有内容的。下面结合图6对本实施例中复用内存中生成内容的方法进行示例说明。假设在一开始,图6中列表中的图片都是在终端的屏幕上显示,各个图片的内存都属于活跃内存,当用户滑动屏幕,列表中的第一张图片和第二张图片滑出屏幕,此时,第一、二张图片属于屏幕外的图片,将该第一、二张图片的内存加入到复用内存中,在活跃内存中删除第一、二张图片的映射。
进一步的,检查图片缓存内存的预设内存中是否存在待加载图片;若存在,则从预设内存中获取待加载图片进行显示包括:
检查活跃内存中是否存在待加载图片,若存在,则从活跃内存中获取待加载图片进行显示;若不存在,则检查复用内存中是否存在待加载图片,若存在,则从复用内存中获取待加载图片进行显示。
本实施例中,若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,若有,则获取第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,显示所述待加载图片包括:
若复用内存中不存在待加载图片,则判断复用内存中是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,若存在,则获取所述第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,把所述更新后的内存加入所述活跃内存中,并从复用内存中删除更新后的内存,显示所述待加载图片。
当复用内存中存在第一图片时,在S304中,第一图片的内存会被作为存储待加载图片的内存,当以该待加载图片更新该第一图片的内存,显示待加载图片时,待加载图片的内存应该被划分为活跃内存,而复用内存中第一图片的内存被删除。其中,可以理解的是,待加载图片的尺寸与第一图片的尺寸之间可能会有出入,所以以该待加载图片更新该第一图片的内存包括:以该待加载图片的尺寸更新第一图片的内存的大小,在更新后的内存中绘制待加载图片的图片信息。
进一步的,在S305中,将待加载图片对应的内存划分为预设内存包括:将待加载图片对应的内存划分为活跃内存。
在图片的加载过程中,可能不断有图片移出屏幕,有新的图片显示在屏幕上,所以在图片的加载过程中还包括:当屏幕上的图片移出屏幕之后,计算移出屏幕的图片的尺寸信息;将移出屏幕的图片的内存与该图片的尺寸信息对应地加入到复用内存中,在活跃内存中删除移出屏幕的图片的映射。
在本实施例的方案中,为了对复用内存进行更好的管理,在复用内存中设置有图片池,图片池用于对应地存储移出屏幕的图片与该图片的尺寸信息;图片池中的图片根据自身的尺寸信息被划分到互不重叠的图片尺寸范围中;各个图片尺寸范围设置有对应的图片列表。
上述将移出屏幕的图片的内存与该图片的尺寸信息对应地加入到复用内存中包括:
判断移出屏幕的图片的尺寸信息是否与图片尺寸范围中的一个图片尺寸范围匹配;若是,将移出屏幕的图片的内存加入匹配的图片尺寸范围对应的图片列表中,否则根据移出屏幕的图片的尺寸信息,在图片池中生成一个新的图片尺寸范围,将移出屏幕的图片的内存加入新的图片尺寸范围的图片列表中。
进一步的,在本实施例中,采用键值对的方式存储图片尺寸范围和对应的图片列表。其中图片尺寸范围是key值,图片列表是value。其中,可以理解的是,在一个实施例中图片尺寸范围可以表示图片的长和宽分别在一定的范围内,例如一个图片尺寸范围表示图片的长在x1-x2之间,宽在y1到y2之间;在一个实施例中图片尺寸范围可以表示图片的长和宽的固定值,例如一个图片尺寸范围为:长x3、宽y3。下面结合图7对本实施例中在图片池中如何存储图片进行示例说明。在图7中,图片池中存储的数据是GroupedImageList分组图片列表,其中,尺寸表示图片尺寸范围,尺寸1-尺寸n是n个不同的图片尺寸范围,在图7中,每一个尺寸都是一个key值,其value值是对应的图片列表,在图片列表中存储的是分别属于各个尺寸的图片。例如图7中大小在尺寸1的范围内的图片有一张-图片1,大小在尺寸3的图片有n张。其中,可以理解的是,当尺寸指示的图片长和宽固定,则value值是对应的是同一大小的图片的列表。
进一步的,本实施例中,可以从图片缓存内存中分配一定的内存到复用内存中存储图片尺寸范围与图片数量的对应关系,该对应关系的存储可以如图8所示的尺寸-数量列表中包括n项,每一项由尺寸和总数组成,总数的实际内容表示图片的数量,尺寸-数量列表中每一项表示在一个尺寸范围内的图片的数量。在S303中,当活跃内存和复用内存中都不存在待加载图片时,可以先计算待加载图片的大小,将该大小与尺寸-数量列表中各项的尺寸进行比较,匹配成功,则检查匹配的尺寸对应的总数,若总数为0,则说明复用内存中没有可复用的内存,需要按照S305的方案加载待加载图片。
下面结合图9对本实施例中当需要下载图片时,如何下载图片到图片缓存内存中进行示例说明,假设如图7和图8中所示的size表示的是图片的长和宽的具体值,下载图片到图片缓存内存中的方法包括:
S901、当需要下载图片时,计算待下载图片的大小尺寸,假设为尺寸2;
S902、在图8所示的尺寸-数量列表中查找与尺寸2在预设尺寸范围差内的size;若查找成功,则进入S803,否则进入S804;
其中,较优的是在尺寸-数量列表中查找与尺寸2相同的尺寸,若查找不到,则查找与尺寸2相近的尺寸,其中该查找成功的尺寸不小于尺寸2。
S903、根据查找成功的尺寸2,在图7中的图片分组列表中查找尺寸2对应的图片列表;进入S905;
S904、从图片缓存内存中分配一块内存,在该内存中绘制待下载图片;进入S906;
S905、从查找到的图片列表中获取一张图片的内存,根据待下载图片的大小对这块内存进行更新,并在更新后的内存中绘制待下载图片;
S906、根据待下载图片的尺寸尺寸2,将待下载图片的内存加入到图片分组列表的尺寸2的图片列表中。
采用本实施例的图片加载方法,采用动态计算图片缓存内存的方式进行内存分配,并且将图片缓存内存的一部分内存分为活跃内存和复用内存两部分,通过活跃内存和复用内存的协调工作,改善了已有图片加载器不停释放和分配内存造成的内存抖动的问题,从而改善了浏览图片的卡顿、OOM、ANR、内存碎片的问题,大大提升了用户的体验。
实施例二:
如图10所示,本实施例示出一种终端,包括处理器1001、存储器1002及通信总线1003;
通信总线1003用于实现处理器1001和存储器1002之间的连接通信;
处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片;
若存在,则从预设内存中获取待加载图片进行显示;
若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,下载待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;
否则,从缓存内存中为待加载图片分配内存,下载待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
现有的图片二级加载方案中,图片的存储分为内存缓存与磁盘缓存,本实施例的终端针对现有图片加载策略中的内存缓存策略进行了改进。本实施例中,待加载图片包括但不限于终端的相机拍摄的图片,终端下载的图片、截屏得到的图片等等。终端加载图片的过程可以发生在用户浏览网页的场景下,也可能发生在用户浏览本地图库的场景下,本实施例对此没有限定。
在实际中,终端的可用内存随着应用的开启、关闭等在发生变化,为了平衡终端可用内存与图片缓存内存,本实施例中,对图片缓存内存采用动态分配的方式,即根据终端当前可用内存的大小动态地设置图片缓存内存的大小,当终端当前可用内存变大(或变小),图片缓存内存可以适当变大(或变小)。进一步的,可以设置一个预设比例值,如0.3,图片缓存内存的大小为终端当前可用内存与预设比例值的乘积。其中,预设比例值可以根据终端的实际情况设置。且当终端的需求不同,预设比例值也可以随之改变,本实施例对此没有限制。
进一步的,处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:对待加载图片的识别信息与预设内存中图片的识别信息进行匹配,匹配成功,则预设内存中存在待加载图片。其中,一个图片的识别信息包括图片链接、图片地址、图片指纹中的至少一个。
当预设内存中没有该待加载图片时,需要在预设内存中存储该待加载图片,则需要为该待加载图片分配内存。本实施例中,为了避免对缓存内存的进行频繁的释放和分配操作,当预设内存中不存在待加载图片时,先判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,存在,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片。具体的,处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:确定待加载图片的大小尺寸,将待加载图片的大小尺寸与预设内存中存储的当前未在屏幕上显示的图片的大小尺寸进行比较,尺寸差在预设尺寸范围差内的图片为第一图片;获取第一图片的内存,获取待加载图片,以该待加载图片更新该第一图片的内存。进一步的,处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:擦除第一图片的内存中该第一图片的信息,之后,在该第一图片的内存上绘制待加载图片的图片信息。其中,满足尺寸差在预设尺寸范围差内的第一图片的数量可能是多个,若待加载图片为一个,则需从多个第一图片中选择一个。进一步的,待加载图片的数量可以是至少一张。进一步的,为了能对待加载图片进行完整的存储,第一图片的大小实际上应该不小于待加载图片的大小。
其中,当预设内存中没有待加载图片时,需要从有该待加载图片的地方获取该待加载图片存入预设内存中,显示待加载图片。其中,处理器1001用于执行存储器1002中存储的图片加载程序,以实现获取待加载图片的以下步骤:判断终端的磁盘缓存中是否有该待加载图片;当判断结果为是,则从磁盘内存中读取该待加载图片写入预设内存中;当判断结果为否,则下载该待加载图片。其中,下载待加载图片的方式包括但不限于通过运营商的无线网络下载,通过WiFi的方式下载,通过蓝牙的方式下载等等。
进一步的,在预设内存中不存在待加载图片,且预设内存存储的未显示在屏幕的图片中不存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片时,需要从图片缓存内存中新分配内存给待加载图片。其中,可以理解的是,分配的内存属于图片缓存内存中非预设内存的部分。所以本实施例中,预设内存的大小小于图片缓存内存的大小。在分配的内存中绘制待加载图片的图片信息,显示该待加载图片的同时,需要将待加载图片的内存划分为预设内存,由此预设内存中就存有该待加载图片。
进一步的,为了便于对待加载图片的加载,本实施例将预设内存划分为活跃内存和复用内存;活跃内存和复用内存、图片缓存内存以及终端当前可用内存的关系参见图4和实施例一的相关叙述。
本实施例中,对活跃内存和复用内存有以下的定义:活跃内存包括当前在屏幕上显示的图片使用的内存;复用内存包括屏幕上显示的图片在移出屏幕后使用的内存。活跃内存和复用内存的大小并不是固定不变的,都是随着各自存储的图片的数量变化的,当活跃内存中在屏幕上显示的图片数量减少,活跃内存的大小自然会变小。根据上述对活跃内存和复用内存的定义,可以知道,当复用内存被划分后,一开始其中是没有内容的。对复用内存中的数据的生成参见实施例一的相关说明。
进一步的,处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:检查活跃内存中是否存在待加载图片,若存在,则从活跃内存中获取待加载图片进行显示;
若不存在,则检查复用内存中是否存在待加载图片,若存在,则从复用内存中获取待加载图片进行显示;
若复用内存中不存在待加载图片,则判断复用内存中是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,若存在,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,把更新后的内存加入活跃内存中,并从复用内存中删除更新后的内存,显示待加载图片。
当复用内存中存在第一图片时,第一图片的内存会被作为存储待加载图片的内存,当以该待加载图片更新该第一图片的内存,显示待加载图片时,待加载图片的内存应该被划分为活跃内存,而复用内存中第一图片的内存被删除。其中以待加载图片更新该第一图片的内存包括:以该待加载图片的尺寸更新第一图片的内存的大小,在更新后的内存中绘制待加载图片的图片信息。进一步的,将待加载图片对应的内存划分为预设内存包括:将待加载图片对应的内存划分为活跃内存。
在图片的加载过程中,可能不断有图片移出屏幕,有新的图片显示在屏幕上,所以处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:在图片的加载过程中,当屏幕上的图片移出屏幕之后,计算移出屏幕的图片的尺寸信息;将移出屏幕的图片的内存与该图片的尺寸信息对应地加入到复用内存中,在活跃内存中删除移出屏幕的图片的映射。
在本实施例的方案中,为了对复用内存进行更好的管理,在复用内存中设置有图片池,图片池用于对应地存储移出屏幕的图片与该图片的尺寸信息;图片池中的图片根据自身的尺寸信息被划分到互不重叠的图片尺寸范围中;各个图片尺寸范围设置有对应的图片列表。
处理器1001用于执行存储器1002中存储的图片加载程序,以实现以下步骤:判断移出屏幕的图片的尺寸信息是否与图片尺寸范围中的一个图片尺寸范围匹配;若是,将移出屏幕的图片的内存加入匹配的图片尺寸范围对应的图片列表中,否则根据移出屏幕的图片的尺寸信息,在图片池中生成一个新的图片尺寸范围,将移出屏幕的图片的内存加入新的图片尺寸范围的图片列表中。
进一步的,在本实施例中,采用键值对的方式存储图片尺寸范围和对应的图片列表。
下面结合图11对终端如何加载图片进行说明。
如图11所示,当加载器开始加载待加载图片,首先在活跃内存中查询是否存在待加载图片,当查询结果为是,则获取活跃内存中的待加载图片进行展示。若查询结果为否,则计算待加载图片的尺寸,获取复用内存,判断复用内存中是否存在可复用的图片;其中,判断复用内存中是否存在可复用的图片的具体方式包括:判断复用内存中是否存在与待加载图片的尺寸差在预设尺寸差范围内的第一图片,若存在,则第一图片为可复用的图片。
当复用内存中存在可复用的图片时,加载器将可复用图片内存上的图片内容擦除,绘制待加载图片的内容,删除复用内存的内存池(详见实施例一中的说明)中可复用图片的内存,并将绘制待加载图片后的内存存储到活跃内存中。
当复用内存中不存在可复用的图片时,根据待加载图片的大小向图片缓存内存申请新的图片内存,在新的图片内存中绘制待加载图片,并将待加载图片的内存加入活跃内存中。
其中,在查询到活跃内存中不存在待加载图片后,在计算待加载图片的尺寸前,还可以查询复用内存中是否存在待加载图片,若是,则从复用内存中获取待加载图片进行显示,将待加载图片的内存保存到活跃内存中,同时将复用内存中待加载图片的内存删除。当复用内存中查询不到待加载图片时才开始计算待加载图片的大小。
采用本实施例的终端,采用动态计算图片缓存内存的方式进行内存分配,并且将图片缓存内存的一部分内存分为活跃内存和复用内存两部分,通过活跃内存和复用内存的协调工作,改善了已有图片加载器不停释放和分配内存造成的内存抖动的问题,从而改善了浏览图片的卡顿、OOM、ANR、内存碎片的问题,大大提升了用户的体验。
实施例三:
本实施例示出一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在待加载图片,
若存在,则从预设内存中获取待加载图片进行显示;
若不存在,则判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片;
否则,从缓存内存中为待加载图片分配内存,获取待加载图片,在内存上绘制待加载图片的图片信息,显示待加载图片,将待加载图片对应的内存划分为预设内存。
在实际中,终端的可用内存随着应用的开启、关闭等在发生变化,为了平衡终端可用内存与图片缓存内存,本实施例中,对图片缓存内存采用动态分配的方式,即根据终端当前可用内存的大小动态地设置图片缓存内存的大小,当终端当前可用内存变大(或变小),图片缓存内存可以适当变大(或变小)。进一步的,可以设置一个预设比例值,如0.3,本实施例中的图片缓存内存的大小为终端当前可用内存与预设比例值的乘积。其中,预设比例值可以根据终端的实际情况设置。且当终端的需求不同,预设比例值也可以随之改变,本实施例对此没有限制。
进一步的,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:对待加载图片的识别信息与预设内存中图片的识别信息进行匹配,匹配成功,则预设内存中存在待加载图片。其中,一个图片的识别信息包括图片链接、图片地址、图片指纹中的至少一个。
当预设内存中没有该待加载图片时,需要在预设内存中存储该待加载图片,则需要为该待加载图片分配内存。本实施例中,为了避免对缓存内存的进行频繁的释放和分配操作,当预设内存中不存在待加载图片时,先判断预设内存中存储的当前未在屏幕上显示的图片中,是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,显示待加载图片。具体的,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:确定待加载图片的大小,将待加载图片的大小与预设内存中存储的当前未在屏幕上显示的图片的大小进行比较,差值在预设尺寸范围差内的图片为第一图片,获取第一图片的内存,获取待加载图片,以该待加载图片更新该第一图片的内存。进一步的,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:擦除第一图片的内存中该第一图片的信息,之后,在该第一图片的内存上绘制待加载图片的信息。其中,满足尺寸差在预设尺寸范围差内的第一图片的数量可能是多个。本实施例中,待加载图片的数量可以是至少一张。进一步的,为了能对待加载图片进行完整的存储,第一图片的大小实际上应该不小于待加载图片的大小。
其中,当预设内存中没有待加载图片时,需要从有该加载图片的地方获取该待加载图片存入预设内存中,显示待加载图片。其中,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:判断终端的磁盘缓存中是否有该待加载图片;当判断结果为是,则从磁盘内存中读取该待加载图片写入预设内存中;当判断结果为否,则下载该待加载图片。其中,下载待加载图片的方式包括但不限于通过运营商的无线网络下载,通过WiFi的方式下载,通过蓝牙的方式下载等等。
进一步的,在预设内存中不存在待加载图片,且预设内存存储的未显示在屏幕的图片中不存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片时,需要从图片缓存内存中新分配内存给待加载图片。其中,可以理解的是,分配的内存属于图片缓存内存中非预设内存的部分。所以本实施例中,预设内存的大小小于图片缓存内存的大小。在分配的内存中绘制待加载图片的图片信息,显示该待加载图片的同时,需要将待加载图片的内存划分为预设内存。由此预设内存中就存有该待加载图片。
进一步的,为了便于对待加载图片的加载,本实施例将预设内存划分为活跃内存和复用内存。本实施例中,对活跃内存和复用内存有以下的定义:活跃内存包括当前在屏幕上显示的图片使用的内存;复用内存包括屏幕上显示的图片在移出屏幕后使用的内存。活跃内存和复用内存的大小并不是固定不变的,都可随着各自存储的图片的数量变化,当活跃内存中在屏幕上显示的图片数量减少,活跃内存的大小自然会变小。根据上述对活跃内存和复用内存的定义,可以知道,当复用内存被划分后,一开始其中是没有内容的。对复用内存中的数据的生成参见实施例一的相关说明。
进一步的,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:检查活跃内存中是否存在待加载图片,若存在,则从活跃内存中获取待加载图片进行显示;
若不存在,则检查复用内存中是否存在待加载图片,若存在,则从复用内存中获取待加载图片进行显示;
若复用内存中不存在待加载图片,则判断复用内存中是否存在与待加载图片的尺寸差在预设尺寸范围差内的第一图片;若存在,则获取第一图片的内存,获取待加载图片,以待加载图片更新第一图片的内存,把更新后的内存加入活跃内存中,并从复用内存中删除更新后的内存,显示待加载图片。
当复用内存中存在第一图片时,第一图片的内存会被作为存储待加载图片的内存,当以该待加载图片更新该第一图片的内存,显示待加载图片时,待加载图片的内存应该被划分为活跃内存,而复用内存中第一图片的内存被删除。其中以待加载图片更新该第一图片的内存包括:以该待加载图片的尺寸更新第一图片的内存的大小,在更新后的内存中绘制待加载图片的图片信息。进一步的,将待加载图片对应的内存划分为预设内存包括:将待加载图片对应的内存划分为活跃内存。
在图片的加载过程中,可能不断有图片移出屏幕,有新的图片显示在屏幕上,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:在图片的加载过程中,当屏幕上的图片移出屏幕之后,计算移出屏幕的图片的尺寸信息;将移出屏幕的图片的内存与该图片的尺寸信息对应地加入到复用内存中,在活跃内存中删除移出屏幕的图片的映射。
在本实施例的方案中,为了对复用内存进行更好的管理,在复用内存中设置有图片池,图片池用于对应地存储移出屏幕的图片与该图片的尺寸信息;图片池中的图片根据自身的尺寸信息被划分到互不重叠的图片尺寸范围中;各个图片尺寸范围设置有对应的图片列表。
进一步的,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被执行,以实现以下步骤:判断移出屏幕的图片的尺寸信息是否与图片尺寸范围中的一个图片尺寸范围匹配;若是,将移出屏幕的图片的内存加入匹配的图片尺寸范围对应的图片列表中,否则根据移出屏幕的图片的尺寸信息,在图片池中生成一个新的图片尺寸范围,将移出屏幕的图片的内存加入新的图片尺寸范围的图片列表中。进一步的,采用键值对的方式存储图片尺寸范围和对应的图片列表,当然,在一些实施例中,也可以采用其他的数据格式对图片尺寸范围和对应的图片列表进行存储。
本实施例改善了现有技术中图片加载器不停释放和分配缓存内存造成的内存抖动的问题,从而改善了浏览图片的卡顿、OOM、ANR、内存碎片的问题,大大提升了用户的体验。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种图片加载方法,其特征在于,包括:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在所述待加载图片;
若存在,则从所述预设内存中获取所述待加载图片进行显示;
若不存在,则判断所述预设内存中存储的、并且当前未在屏幕上显示的图片中,是否存在与所述待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,显示所述待加载图片;
否则,从所述图片缓存内存中为所述待加载图片分配内存,获取所述待加载图片,在所述内存上绘制所述待加载图片的图片信息,显示所述待加载图片,将所述待加载图片对应的内存划分为所述预设内存。
2.如权利要求1所述的图片加载方法,其特征在于,所述预设内存包括活跃内存和复用内存;所述活跃内存包括当前在所述屏幕上显示的图片使用的内存;所述复用内存包括所述屏幕上显示的图片在移出所述屏幕后使用的内存;
所述检查图片缓存内存的预设内存中是否存在所述待加载图片;若存在,则从所述预设内存中获取所述待加载图片进行显示包括:
检查所述活跃内存中是否存在所述待加载图片,若存在,则从所述活跃内存中获取所述待加载图片进行显示;若不存在,则检查所述复用内存中是否存在所述待加载图片,若存在,则从所述复用内存中获取所述待加载图片进行显示;
所述若不存在,则判断所述预设内存中当前未在屏幕上显示的图片中,是否存在与所述待加载图片的尺寸差在预设尺寸范围差内的第一图片,若有,则获取第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,显示所述待加载图片包括:
若所述复用内存中不存在所述待加载图片,则判断所述复用内存中是否存在与所述待加载图片的尺寸差在预设尺寸范围差内的第一图片,若存在,则获取所述第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,把所述更新后的内存加入所述活跃内存中,并从复用内存中删除更新后的内存,显示所述待加载图片。
3.如权利要求2所述的图片加载方法,其特征在于,在图片加载的过程中,还包括:
当所述屏幕上的图片移出所述屏幕之后,计算所述移出所述屏幕的图片的尺寸信息;
将移出所述屏幕的图片的内存与该图片的尺寸信息对应地加入到所述复用内存中,在所述活跃内存中删除所述移出所述屏幕的图片的映射。
4.如权利要求3所述的图片加载方法,其特征在于,所述复用内存中设置有图片池,所述图片池用于对应地存储有移出所述屏幕的图片与该图片的尺寸信息;所述图片池中的图片根据自身的尺寸信息被划分到互不重叠的图片尺寸范围中;各个图片尺寸范围设置有对应的图片列表;
将移出所述屏幕的图片的内存与该图片的尺寸信息对应地加入到所述复用内存中包括:
判断移出所述屏幕的图片的尺寸信息是否与所述图片尺寸范围中的一个图片尺寸范围匹配;
若是,将所述移出所述屏幕的图片的内存加入匹配的所述图片尺寸范围对应的图片列表中,否则根据所述移出所述屏幕的图片的尺寸信息,在所述图片池中生成一个新的图片尺寸范围,将所述移出所述屏幕的图片的内存加入新的图片尺寸范围的图片列表中。
5.如权利要求4所述的图片加载方法,其特征在于,所述图片尺寸范围与所述图片列表以键值对的方式存储。
6.如权利要求1-5任一项所述的图片加载方法,其特征在于,所述图片缓存内存的大小为所述终端当前可用内存与预设比例值的乘积。
7.一种终端,其特征在于,所述终端包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的图片加载程序,以实现以下步骤:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在所述待加载图片;
若存在,则从所述预设内存中获取所述待加载图片进行显示;
若不存在,则判断所述预设内存中存储的、并且当前未在屏幕上显示的图片中,是否存在与所述待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,显示所述待加载图片;
否则,从所述图片缓存内存中为所述待加载图片分配内存,获取所述待加载图片,在所述内存上绘制所述待加载图片的图片信息,显示所述待加载图片,将所述待加载图片对应的内存划分为所述预设内存。
8.如权利要求7所述的终端,其特征在于,所述预设内存包括活跃内存和复用内存;所述活跃内存包括当前在所述屏幕上显示的图片使用的内存;所述复用内存包括所述屏幕上显示的图片在移出所述屏幕后使用的内存;
所述处理器用于执行存储器中存储的图片加载程序,以实现以下步骤:
检查所述活跃内存中是否存在所述待加载图片,若存在,则从所述活跃内存中获取所述待加载图片进行显示;
若不存在,则检查所述复用内存中是否存在所述待加载图片,若存在,则从所述复用内存中获取所述待加载图片进行显示;
若所述复用内存中不存在所述待加载图片,则判断所述复用内存中是否存在与所述待加载图片的尺寸差在预设尺寸范围差内的第一图片,若存在,则获取所述第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,把所述更新后的内存加入所述活跃内存中,并从复用内存中删除更新后的内存,显示所述待加载图片。
9.如权利要求7或8所述的终端,其特征在于,所述图片缓存内存的大小为所述终端当前可用内存与预设比例值的乘积。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被执行,以实现以下步骤:
当终端需要加载图片时,确定待加载图片,检查图片缓存内存的预设内存中是否存在所述待加载图片;
若存在,则从所述预设内存中获取所述待加载图片进行显示;
若不存在,则判断所述预设内存中存储的当前未在屏幕上显示的图片中,是否存在与所述待加载图片的尺寸差在预设尺寸范围差内的第一图片;
若有,则获取第一图片的内存,获取所述待加载图片,以所述待加载图片更新所述第一图片的内存,显示所述待加载图片;
否则,从所述图片缓存内存中为所述待加载图片分配内存,获取所述待加载图片,在所述内存上绘制所述待加载图片的图片信息,显示所述待加载图片,将所述待加载图片对应的内存划分为所述预设内存。
CN201710508961.7A 2017-06-28 2017-06-28 图片加载方法、终端和计算机可读存储介质 Active CN107480169B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710508961.7A CN107480169B (zh) 2017-06-28 2017-06-28 图片加载方法、终端和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710508961.7A CN107480169B (zh) 2017-06-28 2017-06-28 图片加载方法、终端和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN107480169A CN107480169A (zh) 2017-12-15
CN107480169B true CN107480169B (zh) 2020-12-18

Family

ID=60596027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710508961.7A Active CN107480169B (zh) 2017-06-28 2017-06-28 图片加载方法、终端和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN107480169B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287892B (zh) * 2018-01-18 2022-03-04 北京奇艺世纪科技有限公司 一种图片加载方法、装置及电子设备
CN108536768A (zh) * 2018-03-22 2018-09-14 努比亚技术有限公司 图片加载方法、终端及计算机可读存储介质
CN109886191A (zh) * 2019-02-20 2019-06-14 上海昊沧系统控制技术有限责任公司 一种基于ar的识别物管理方法及系统
CN110868624B (zh) * 2019-11-08 2023-08-22 Vidaa(荷兰)国际控股有限公司 一种图片加载方法及智能电视
CN114359017B (zh) * 2021-12-27 2023-11-17 阿波罗智联(北京)科技有限公司 多媒体资源的处理方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102981960A (zh) * 2011-09-07 2013-03-20 腾讯科技(深圳)有限公司 一种实现显示缓存的方法及终端
CN105046640A (zh) * 2015-05-14 2015-11-11 深圳市美贝壳科技有限公司 图片内存管理方法及装置
CN102768861B (zh) * 2011-05-05 2016-02-24 联发科技股份有限公司 内存装置控制器及内存存取方法
CN106713689A (zh) * 2015-11-13 2017-05-24 北京奇虎科技有限公司 一种图片上传方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102768861B (zh) * 2011-05-05 2016-02-24 联发科技股份有限公司 内存装置控制器及内存存取方法
CN102981960A (zh) * 2011-09-07 2013-03-20 腾讯科技(深圳)有限公司 一种实现显示缓存的方法及终端
CN105046640A (zh) * 2015-05-14 2015-11-11 深圳市美贝壳科技有限公司 图片内存管理方法及装置
CN106713689A (zh) * 2015-11-13 2017-05-24 北京奇虎科技有限公司 一种图片上传方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Android中高效的显示图片-Bitmap的内存模型;都有米;《https://www.jianshu.com/p/eadb0ef271b0》;20160828;1-5 *

Also Published As

Publication number Publication date
CN107480169A (zh) 2017-12-15

Similar Documents

Publication Publication Date Title
CN107480169B (zh) 图片加载方法、终端和计算机可读存储介质
CN110851051B (zh) 一种对象分享方法及电子设备
CN107402694B (zh) 应用切换方法、设备和计算机可读存储介质
US11409421B2 (en) Object processing method and terminal device
CN108073458B (zh) 内存回收方法、移动终端及计算机可读存储介质
CN110196667B (zh) 一种通知消息的处理方法及终端
CN109814786B (zh) 图像存储方法及终端设备
KR102221034B1 (ko) 컨텐츠 표시 제어 방법 및 그 전자 장치
CN110764666B (zh) 一种显示控制方法及电子设备
CN111142723B (zh) 图标移动方法及电子设备
CN107765941B (zh) 一种图标显示方法、终端及计算机可读存储介质
US20210357106A1 (en) Information processing method and terminal device
CN108228902B (zh) 一种文件显示方法及移动终端
CN109522278B (zh) 一种文件存储方法及终端设备
CN107783709B (zh) 一种图像的查看方法及移动终端
CN111026299A (zh) 信息分享方法及电子设备
CN110502164B (zh) 一种界面显示方法及电子设备
CN110703972B (zh) 一种文件控制方法及电子设备
CN108984066B (zh) 一种应用程序图标显示方法及移动终端
US11989399B2 (en) Display method and electronic device
CN107734023B (zh) 静态资源文件下载方法、移动终端及计算机可读存储介质
CN110008184B (zh) 一种文件处理方法及电子设备
CN111026674A (zh) 一种数据存储方法及电子设备
CN107943590B (zh) 基于关联启动应用的内存优化方法、移动终端及存储介质
CN107704287B (zh) 程序应用免安装方法、移动终端及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201130

Address after: 210036, 303 Hanzhoung Avenue, Gulou District, Jiangsu, Nanjing

Applicant after: Nanjing car chain Technology Co.,Ltd.

Address before: 518057 Guangdong province Shenzhen city Nanshan District high tech park, No. 9018 North Central Avenue, building A, floor 10, Han's innovation

Applicant before: NUBIA TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220325

Address after: 300000 room 1201-1268, 12th floor, chenjing building, Hedong District, Tianjin (easy crowdsourcing Industrial Park)

Patentee after: Tianjin Artificial Intelligence general application system (Tianjin) Co.,Ltd.

Address before: 303 Hanzhongmen street, Gulou District, Nanjing City, Jiangsu Province

Patentee before: Nanjing car chain Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230329

Address after: Room 501, 5th Floor, Building D, Vitality Business Plaza, 185 Jumao Street, Yuanhe Street, Xiangcheng District, Suzhou City, Jiangsu Province, 215100

Patentee after: Suzhou Jingri Fangfang Information Technology Co.,Ltd.

Address before: 300000 room 1201-1268, 12th floor, chenjing building, Hedong District, Tianjin (easy crowdsourcing Industrial Park)

Patentee before: Tianjin Artificial Intelligence general application system (Tianjin) Co.,Ltd.