CN103885753A - 缓存图片的管理方法、装置和客户端 - Google Patents
缓存图片的管理方法、装置和客户端 Download PDFInfo
- Publication number
- CN103885753A CN103885753A CN201410075209.4A CN201410075209A CN103885753A CN 103885753 A CN103885753 A CN 103885753A CN 201410075209 A CN201410075209 A CN 201410075209A CN 103885753 A CN103885753 A CN 103885753A
- Authority
- CN
- China
- Prior art keywords
- picture
- control
- buffer memory
- function
- ubitmap
- 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.)
- Pending
Links
Images
Landscapes
- Image Input (AREA)
Abstract
本发明提出一种缓存图片的管理方法、装置和客户端。所述管理方法包括以下步骤:获取客户端的缓存的图片;获取图片被客户端中控件调用的控件调用信息;以及根据控件调用信息对缓存中的图片进行管理。本发明实施例的缓存图片的管理方法,可以有效控制图片缓存的释放,减少内存占用和系统开销,避免误回收导致的系统崩溃,有效提升用户体验;另外,采用本发明的方法,还可以降低系统的开发难度,提高开发效率。
Description
技术领域
本发明涉及终端技术领域,尤其涉及一种缓存图片的管理方法、装置和客户端。
背景技术
在应用程序运行过程中会调用大量的图片,为了防止每次调用图片时都重新创建记录而增加系统开销,需要对这些图片进行缓存,以提高下次调用的速度。但大量的图片缓存易造成内存空间不足,因此,需要采取合理有效的缓存机制来释放缓存中的图片。目前,实现图片释放采用的方案主要有两种。第一种是弱引用或软引用对象的缓存管理,通过垃圾收集器对缓存中的图片进行清理。第二种是使用LRUCache(一种服务器端缓存方式),在缓存图片到达LRUCache的上限时,通过第一种方式清理缓存图片,或者将超出部分的缓存图片直接清理。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:第一种方式过多的依赖垃圾收集器,若垃圾收集器清理图片缓存太积极,需要不断重新创建图片,增加系统开销;如果图片回收不及时,图片缓存太多,易导致系统超过其缓存限制而崩溃。而第二种方式如果使用了第一种方式清理LRUCache中的图片,第一种方式的缺陷就随之出现;如果超出部分的图片直接回收,就可能出现“使用已经回收的图片”错误而崩溃。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的第一个目的在于提出一种缓存图片的管理方法。该方法能够方便用户通过应用程序快速访问缓存图片,并能适时实现图片释放,避免由于大量图片缓存冗余造成的系统运行缓慢,有效提升用户体验。
本发明的第二个目的在于提出一种缓存图片的管理装置。
本发明的第三个目的在于提出一种客户端。
为了实现上述目的,本发明第一方面实施例的缓存图片的管理方法,包括:获取客户端的缓存的图片;获取所述图片被所述客户端中控件调用的控件调用信息;以及根据所述控件调用信息对所述缓存中的图片进行管理。
本发明实施例的缓存图片的管理方法,通过获取缓存图片的控件调用信息,根据缓存图片当前被调用的次数和最后调用时间,实时清理缓存图片,可以有效控制图片缓存的释放,减少内存占用和系统开销,避免误回收导致的系统崩溃,有效提升用户体验;另外,采用本发明的方法,还可以降低系统的开发难度,提高开发效率。
为了实现上述目的,本发明第二方面实施例的缓存图片的管理装置,包括:第一获取模块,用于获取客户端的缓存的图片;第二获取模块,用于获取所述图片被所述客户端中控件调用的控件调用信息;以及管理模块,用于根据所述控件调用信息对所述缓存中的图片进行管理。
本发明实施例的缓存图片的管理装置,能够获取缓存图片的控件调用信息,根据缓存图片当前被调用的次数和最后调用时间,实时清理缓存图片,可以有效控制图片缓存的释放,减少内存占用和系统开销,避免误回收导致的系统崩溃,有效提升用户体验。
为了实现上述目的,本发明第三方面实施例的客户端,包括:外壳,显示器、电路板和处理器,其中,所述电路板安置在所述外壳围成的空间内部,所述显示器在所述外壳外部,并与所述电路板相连接,所述处理器设置在所述电路板上;所述处理器用于处理数据,并具体用于执行以下步骤:获取客户端的缓存的图片;获取所述图片被所述客户端中控件调用的控件调用信息;以及根据所述控件调用信息对所述缓存中的图片进行管理。
本发明实施例的客户端,可将从服务器下载的图片重新封装成UBitmap图片,通过获取缓存图片的控件调用信息,根据缓存图片当前被调用的次数和最后调用时间,实时清理缓存图片,有效控制图片缓存的释放,减少了内存占用和系统开销,避免误回收导致的系统崩溃,进一步提升了用户体验。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的缓存图片的管理方法的流程图;
图2(a)是根据本发明另一个实施例的缓存图片的管理方法的流程图;
图2(b)是根据本发明一个具体实施例的通过图片缓存类对缓存的图片进行管理的流程图;
图3(a)是根据本发明一个实施例的缓存图片的管理方法中的UBitmap类图示意图;
图3(b)是根据本发明一个实施例的缓存图片的管理方法中的BitmapCache类图示意图;
图3(c)是根据本发明一个实施例的缓存图片的管理方法中的图片缓存类BitmapCache、图片类UBitmap与控件信息类ControlInfo的调用关系示意图;
图4是根据本发明一个实施例的缓存图片的管理装置的结构框图;
图5是根据本发明另一个实施例的缓存图片的管理装置的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
下面参考附图描述根据本发明实施例的缓存图片的管理方法、装置和客户端。
为了使应用程序内存图片得到有效的利用,既不过多的占用内存,出现内存溢出,又不用频繁的创建图片而增加应用程序的开销,本发明提出一种缓存图片的管理方法。
图1是根据本发明一个实施例的缓存图片的管理方法的流程图。
如图1所示,该缓存图片的管理方法包括:
S101,获取客户端的缓存图片。
为了避免重复载入图片并创建记录增加系统开销,影响系统的运行,客户端将应用程序所使用的图片存储在缓存中,以提高下次调用的速度。例如,即时通讯软件中载入的联系人头像会被存储在缓存中,每次打开需要显示联系人头像的界面时,即时通讯软件都可以快速获取缓存中的联系人头像。
S102,获取图片被客户端中控件调用的控件调用信息。
其中,控件调用信息包括图片的最后调用时间和调用图片的控件个数。客户端的缓存图片有可能同时被多个控件使用,每个控件在应用程序中的生命周期都可能是不相同的。如果有新控件使用一个图片时,调用这个图片的控件个数就会加1,图片的最后调用时间也随之更新;如果调用这个图片的一个控件的生命周期已经结束,那么调用这个图片的控件个数就会减1。
S103,根据控件调用信息对缓存中的图片进行管理。
具体的,根据获取到的调用图片的控件个数,当调用某一图片的控件个数小于第一预设阈值时,在缓存中清除该图片。在本发明的实施例中,第一预设阈值可为1。也就是说,只有当缓存图片没有被任何控件调用时才会被清除,从而避免了系统因“使用已经回收的图片”错误而崩溃。
在本发明实施例的本步骤中,每当有控件请求加载图片时,检测缓存的存储状态,若控件请求加载的图片存在于缓存中,则直接调用缓存中的图片,同时更新对应的控件调用信息;若控件请求加载的图片不存在于缓存中,则检测缓存的使用空间是否已超过第二预设阈值。其中,第二预设阈值由系统根据总缓存的大小设定。
若缓存的使用空间未超过第二预设阈值,则从服务器获取所需图片,并为从服务器获取的图片添加控件调用信息,将相应的图片存储至缓存;当缓存的使用空间超过第二预设阈值时,则根据最后调用时间获取缓存中预设比例的图片,如果预设比例的图片当前没有控件调用,则清除预设比例的图片。其中,预设比例根据总缓存的实际情况而定,预设比例的图片的最后调用时间早于缓存中其他图片的最后调用时间。举例而言,当缓存空间不足需要释放缓存图片时,计算出最久没有被使用过的预设比例的图片,若这些图片当前时刻没有被调用,则清除这些图片;若其中有图片正在被控件调用,则清除该图片之外的预设比例的图片。
本发明实施例的缓存图片的管理方法,获取缓存图片的控件调用信息,根据缓存图片当前被调用的次数和最后调用时间,实时清理缓存图片,可以有效控制图片缓存的释放,减少内存占用和系统开销,避免误回收导致的系统崩溃,有效提升用户体验;另外,采用本发明的方法,还可以降低系统的开发难度,提高开发效率。
图2(a)是根据本发明另一个实施例的缓存图片的管理方法的流程图。图3(a)、图3(b)和图3(c)为缓存图片的管理方法中的类图示意图。在该实施例中,通过图片类UBitmap、图片缓存类BitmapCache和控件信息类ControlInfo对缓存图片进行更加高效的管理。具体地,结合图2和图3所示,缓存图片的管理方法包括:
S201,获取客户端的缓存的图片。
S202,通过图片类UBitmap管理缓存图片的控件调用信息。
其中,控件调用信息包括图片的最后调用时间和调用图片的控件个数。客户端的缓存图片有可能同时被多个控件使用,每个控件在应用程序中的生命周期都可能是不相同的。
具体地,可通过UBitmap类实现将图片与相应的控件调用信息建立绑定,如图3(a)所示,UBitmap类包括:
UBitmap()函数,用于创建图片对应的UBitmap对象,UBitmap对象为包含控件调用信息的图片对象;
recycle()函数,用于将生命周期结束的控件对应的控件信息从该控件所调用的UBitmap对象中移除;
setBitmap()函数,用于将控件调用信息封装至图片。
具体而言,当应用程序需要调用的图片在缓存中不存在时,可通过UBitmap()函数中的UBitmap类构造一个新的UBitmap图片对象,并通过setBitmap()函数将该应用程序的控件调用信息封装至该图片对象。如果有新的控件调用图片,则通过setBitmap()函数将新的控件的控件调用信息封装至图片,调用图片的控件个数加1;如果调用图片的一个控件的生命周期结束,则通过recycle()函数将生命周期结束的控件的控件调用信息从图片中移除,调用图片的控件个数减1。
S203,通过图片缓存类BitmapCache对缓存的图片进行管理。
其中,图片缓存类BitmapCache可实现对UBitmap图片合理有效的缓存策略。如图3(b)所示,BitmapCache类包括:
addCache()函数,用于向缓存添加新的被调用的图片;
removeCache()函数,用于将控件个数小于第一预设阈值的图片从缓存中清除;
removeOldCache()函数,用于当缓存的使用空间超过第二预设阈值时,在缓存中清除预设比例的图片。
具体的,在本发明的实施例中,每当有控件请求加载图片时,检测所需图片在缓存中的存储状态,若控件请求加载的图片存在于缓存中,则直接调用缓存中的图片,并通过setBitmap()函数将新的控件的控件调用信息封装至UBitmap图片,调用该图片的控件个数加1;若客户端中控件所调用的图片不存在于缓存中,则从服务器获取图片,为从服务器获取的图片添加控件调用信息,并将该图片存储至缓存。在本发明的一个实施例中,如图2(b)所示可通过以下步骤对缓存的图片进行管理:
S2031,通过控件信息类ControlInfo记录控件的控件调用信息。如图3(c)所示,图片缓存类BitmapCache、图片类UBitmap与控件信息类ControlInfo的调用关系示意图。可通过BitmapCache类在缓存中存储多个UBitmap对象,每个UBitmap对象可具有多个通过ControlInfo类记录控件的控件调用信息。
S2032,通过UBitmap()函数创建从服务器获取的图片对应的UBitmap对象。
S2033,通过setBitmap()函数将控件调用信息封装至从服务器获取的图片,更新UBitmap对象中的图像调用信息。
S2034,通过addCache()函数将对应的UBitmap图片添加至缓存。
S2035,当调用某图片的控件个数小于第一预设阈值时,通过removeCache()函数在缓存中清除该图片。其中,第一预设阈值为1。也就是说,只有当缓存图片没有被任何控件调用时才会被清除,从而避免了系统因“使用已经回收的图片”错误而崩溃。
S204,检测缓存的存储状态。
具体地,本步骤的目的在于检测缓存的存储状态是否已超过第二预设阈值。其中,第二预设阈值由系统根据总缓存的大小设定。当缓存的使用空间超过第二预设阈值时,表示缓存空间不足,需要清理缓存文件以释放缓存空间。
S205,当缓存的使用空间超过第二预设阈值时,则根据最后调用时间获取缓存中预设比例的图片。
其中,预设比例根据总缓存的实际情况而定,预设比例的图片的最后调用时间早于缓存中其他图片的最后调用时间。
S206,如果预设比例的图片当前没有控件调用,则清除预设比例的图片。
举例而言,当缓存空间不足需要释放缓存图片时,根据总缓存的实际情况按照所需清理的空间计算出最久没有被使用过的预设比例的图片,若这些图片当前时刻没有被调用,则通过removeOldCache()函数清除缓存中预设比例的图片;若其中有图片正在被控件调用,则保留正在被调用的图片,清除此图片之外的预设比例的图片。
本发明实施例的缓存图片的管理方法,将从服务器下载的图片重新封装成UBitmap图片,通过BitmapCache实现了对UBitmap合理有效的缓存与释放,减少了内存占用和系统开销,避免误回收导致的系统崩溃,进一步提升了用户体验。
为了实现上述实施例,本发明还提出一种缓存图片的管理装置。
图4是根据本发明一个实施例的缓存图片的管理装置的结构框图。
如图4所示,该缓存图片的管理装置包括:第一获取模块100、第二获取模块200和管理模块300。
具体地,第一获取模块100用于获取客户端的缓存的图片。为了避免重复载入图片并创建记录增加系统开销,影响系统的运行,客户端将应用程序所使用的图片存储在缓存中,以提高下次调用的速度。例如,即时通讯软件中载入的联系人头像会被存储在缓存中,每次打开需要显示联系人头像的界面时,即时通讯软件都可以快速获取缓存中的联系人头像。
第二获取模块200用于获取图片被客户端中控件调用的控件调用信息。其中,控件调用信息包括图片的最后调用时间和调用图片的控件个数。客户端的缓存图片有可能同时被多个控件使用,每个控件在应用程序中的生命周期都可能是不相同的。如果有新控件使用一个图片时,调用这个图片的控件个数就会加1,图片的最后调用时间也随之更新;如果调用这个图片的一个控件的生命周期已经结束,那么调用这个图片的控件个数就会减1。
管理模块300用于根据控件调用信息对缓存中的图片进行管理。具体的,管理模块300可根据第二获取模块200获取到的调用图片的控件个数,当调用某一图片的控件个数小于第一预设阈值时,在缓存中清除该图片。其中,第一预设阈值为1。也就是说,只有当缓存图片没有被任何控件调用时才会被清除,从而避免了系统因“使用已经回收的图片”错误而崩溃。
在本发明实施例中,每当有控件请求加载图片时,检测缓存的存储状态,若控件请求加载的图片存在于缓存中,则直接调用缓存中的图片,同时更新对应的控件调用信息;若控件请求加载的图片不存在于缓存中,则检测缓存的使用空间是否已超过第二预设阈值。其中,第二预设阈值由系统根据总缓存的大小设定。若缓存的使用空间未超过第二预设阈值,则从服务器获取所需图片,并为从服务器获取的图片添加控件调用信息,将相应的图片存储至缓存;当缓存的使用空间超过第二预设阈值时,则根据最后调用时间获取缓存中预设比例的图片,如果预设比例的图片当前没有控件调用,则清除预设比例的图片。其中,预设比例根据总缓存的实际情况而定,预设比例的图片的最后调用时间早于缓存中其他图片的最后调用时间。举例而言,当缓存空间不足需要释放缓存图片时,计算出最久没有被使用过的预设比例的图片,若这些图片当前时刻没有被调用,则清除这些图片;若其中有图片正在被控件调用,则清除该图片之外的预设比例的图片。
本发明实施例的缓存图片的管理装置,获取缓存图片的控件调用信息,根据缓存图片当前被调用的次数和最后调用时间,实时清理缓存图片,可以有效控制图片缓存的释放,减少内存占用和系统开销,避免误回收导致的系统崩溃,有效提升用户体验。
图5是根据本发明另一个实施例的缓存图片的管理装置的结构框图。在该实施例中,通过图片类UBitmap、图片缓存类BitmapCache和控件信息类ControlInfo对缓存图片进行更加高效的管理。具体地,如图5所示,在图4的基础上,管理模块300具体还包括:包括第一获取单元310、第一清除单元320、检测单元330、第二获取单元340、第二清除单元350、第三获取单元360、控件调用管理单元370、存储单元380。
具体地,第一获取单元310用于获取调用图片的控件个数。具体地,可通过UBitmap类实现将图片与相应的控件调用信息建立绑定,如图3(a)所示,UBitmap类包括:
UBitmap()函数,用于创建图片对应的UBitmap对象,UBitmap对象为包含控件调用信息的图片对象;
recycle()函数,用于将生命周期结束的控件对应的控件信息从该控件所调用的UBitmap对象中移除;
setBitmap()函数,用于将控件调用信息封装至图片。
具体而言,当应用程序需要调用的图片在缓存中不存在时,可通过UBitmap()函数中的UBitmap类构造一个新的UBitmap图片对象,并通过setBitmap()函数将新的控件的控件调用信息封装至图片,调用图片的控件个数加1;如果调用图片的一个控件的生命周期结束,则通过recycle()函数将生命周期结束的控件的控件调用信息从图片中移除,调用图片的控件个数减1。
第一清除单元320用于当控件个数小于第一预设阈值时,在缓存中清除图片。在本发明的实施例中,图片缓存类BitmapCache可实现对UBitmap图片合理有效的缓存策略。如图3(b)所示,BitmapCache类包括:
addCache()函数,用于向缓存添加新的被调用的图片;
removeCache()函数,用于将控件个数小于第一预设阈值的图片从缓存中清除;
removeOldCache()函数,用于当缓存的使用空间超过第二预设阈值时,在缓存中清除预设比例的图片。
更具体地,当调用某图片的控件个数小于第一预设阈值时,第一清除单元320通过removeCache()函数在缓存中清除该图片。其中,第一预设阈值为1。也就是说,只有当缓存图片没有被任何控件调用时才会被清除,从而避免了系统因“使用已经回收的图片”错误而崩溃。
检测单元330用于检测缓存的存储状态。检测目的在于检测缓存的存储状态是否已超过第二预设阈值。其中,第二预设阈值由系统根据总缓存的大小设定。当缓存的使用空间超过第二预设阈值时,表示缓存空间不足,需要清理缓存文件以释放缓存空间。
第二获取单元340用于当缓存的使用空间超过第二预设阈值时,根据最后调用时间获取缓存中预设比例的图片。其中,预设比例的图片的最后调用时间早于缓存中其他图片的最后调用时间,预设比例根据总缓存的实际情况而定。
第二清除单元350用于在预设比例的图片当前没有控件调用时,则清除预设比例的图片。举例而言,当检测单元330检测到缓存空间不足,需要释放缓存图片时,第二获取单元340根据总缓存的实际情况按照所需清理的空间计算出最久没有被使用过的预设比例的图片,若这些图片当前时刻没有被调用,则第二清除单元350通过removeOldCache()函数清除缓存中预设比例的图片;若其中有图片正在被控件调用,则保留正在被调用的图片,清除此图片之外的预设比例的图片。
第三获取单元360用于在客户端中控件所调用的图片不存在于缓存中时,从服务器获取图片。
控件调用管理单元370用于为从服务器获取的图片添加控件调用信息。控件调用管理单元370通过控件信息类ControlInfo记录控件的控件调用信息。如图3(c)所示,图片缓存类BitmapCache、图片类UBitmap与控件信息类ControlInfo的调用关系示意图。可通过BitmapCache类在缓存中存储多个UBitmap对象,每个UBitmap对象可具有多个通过ControlInfo类记录控件的控件调用信息。
存储单元380用于将从服务器获取的图片存储至缓存。
更具体地,在本发明的实施例中,每当有控件请求加载图片时,检测所需图片在缓存中的存储状态,若控件请求加载的图片存在于缓存中,则直接调用缓存中的图片,并通过setBitmap()函数将新的控件的控件调用信息封装至UBitmap图片,调用该图片的控件个数加1;若客户端中控件所调用的图片不存在于缓存中,则第三获取单元360从服务器获取图片,通过UBitmap()函数创建从服务器获取的图片对应的UBitmap对象,控件调用管理单元370为从服务器获取的图片添加控件调用信息,通过setBitmap()函数将控件调用信息封装至从服务器获取的图片,更新UBitmap对象中的图像调用信息,然后存储单元380通过addCache()函数将对应的UBitmap图片添加至缓存。
为了实现上述实施例,本发明还提出一种客户端。
根据本发明实施例的客户端包括:外壳,显示器、电路板和处理器,其中,电路板安置在外壳围成的空间内部,显示器在外壳外部,并与电路板相连接,处理器设置在电路板上;处理器用于处理数据,并具体用于执行以下步骤:获取客户端的缓存的图片;获取图片被客户端中控件调用的控件调用信息;以及根据控件调用信息对缓存中的图片进行管理。其中,控件调用信息包括图片的最后调用时间和调用图片的控件个数。
在本发明的一个实施例中,处理器可通过图片缓存类BitmapCache对缓存的图片进行管理。其中,图片缓存类BitmapCache可实现对UBitmap图片合理有效的缓存策略。如图3(b)所示,BitmapCache类包括:
addCache()函数,用于向缓存添加新的被调用的图片;
removeCache()函数,用于将控件个数小于第一预设阈值的图片从缓存中清除;
removeOldCache()函数,用于当缓存的使用空间超过第二预设阈值时,在缓存中清除预设比例的图片。
当调用某图片的控件个数小于第一预设阈值时,通过removeCache()函数在缓存中清除该图片。其中,第一预设阈值为1。也就是说,只有当缓存图片没有被任何控件调用时才会被清除,从而避免了系统因“使用已经回收的图片”错误而崩溃。
处理器可通过UBitmap类实现将图片与相应的控件调用信息建立绑定,如图3(a)所示,UBitmap类包括:
UBitmap()函数,用于创建图片对应的UBitmap对象,UBitmap对象为包含控件调用信息的图片对象;
recycle()函数,用于将生命周期结束的控件对应的控件信息从该控件所调用的UBitmap对象中移除;
setBitmap()函数,用于将控件调用信息封装至图片。
在本发明的一个实施例中,处理器可用于获取调用图片的控件个数,且当控件个数小于第一预设阈值时,在缓存中清除图片。
具体而言,当应用程序需要调用的图片在缓存中不存在时,可通过UBitmap()函数中的UBitmap类构造一个新的UBitmap图片对象,并通过setBitmap()函数将新的控件的控件调用信息封装至图片,调用图片的控件个数加1;如果调用图片的一个控件的生命周期结束,则通过recycle()函数将生命周期结束的控件的控件调用信息从图片中移除,调用图片的控件个数减1。
在本发明的实施例中,处理器还可用于在客户端中控件所调用的图片不存在于缓存中时,从服务器获取图片;以及为从服务器获取的图片添加控件调用信息,并将从服务器获取的图片存储至缓存。具体的,处理器通过控件信息类ControlInfo记录控件的控件调用信息。每当有控件请求加载图片时,检测所需图片在缓存中的存储状态,若控件请求加载的图片存在于缓存中,则直接调用缓存中的图片,并通过setBitmap()函数将ControlInfo记录的新的控件的控件调用信息封装至UBitmap图片,调用该图片的控件个数加1;若客户端中控件所调用的图片不存在于缓存中,则从服务器获取图片,通过UBitmap()函数创建从服务器获取的图片对应的UBitmap对象,为从服务器获取的图片添加控件调用信息,通过setBitmap()函数将控件调用信息封装至从服务器获取的图片,更新UBitmap对象中的图像调用信息,然后通过addCache()函数将对应的UBitmap图片添加至缓存。
在本发明的另一个实施例中,处理器还用于检测缓存的存储状态;当缓存的使用空间超过第二预设阈值时,根据最后调用时间获取缓存中预设比例的图片;如果预设比例的图片当前没有控件调用,则清除预设比例的图片。其中,预设比例的图片的最后调用时间早于缓存中其他图片的最后调用时间,预设比例根据总缓存的实际情况而定。第二预设阈值由系统根据总缓存的大小设定。当缓存的使用空间超过第二预设阈值时,表示缓存空间不足,需要清理缓存文件以释放缓存空间。具体地,当缓存空间不足需要释放缓存图片时,根据总缓存的实际情况按照所需清理的空间计算出最久没有被使用过的预设比例的图片,若这些图片当前时刻没有被调用,则通过removeOldCache()函数清除缓存中预设比例的图片;若其中有图片正在被控件调用,则保留正在被调用的图片,清除此图片之外的预设比例的图片。
本发明实施例的客户端,可将从服务器下载的图片重新封装成UBitmap图片,通过获取缓存图片的控件调用信息,根据缓存图片当前被调用的次数和最后调用时间,实时清理缓存中的图片,有效控制图片缓存的释放,减少了内存占用和系统开销,避免误回收导致的系统崩溃,进一步提升了用户体验。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (22)
1.一种缓存图片的管理方法,其特征在于,包括:
获取客户端的缓存的图片;
获取所述图片被所述客户端中控件调用的控件调用信息;以及
根据所述控件调用信息对所述缓存中的图片进行管理。
2.如权利要求1所述的方法,其特征在于,其中,所述控件调用信息包括所述图片的最后调用时间和调用所述图片的控件个数。
3.如权利要求2所述的方法,其特征在于,所述根据控件调用信息对所述缓存中的图片进行管理进一步包括:
获取调用所述图片的控件个数;以及
当所述控件个数小于第一预设阈值时,在所述缓存中清除所述图片。
4.如权利要求2所述的方法,其特征在于,所述根据控件调用信息对所述缓存中的图片进行管理进一步包括:
检测所述缓存的存储状态;
当所述缓存的使用空间超过第二预设阈值时,根据所述最后调用时间获取所述缓存中预设比例的图片,其中,所述预设比例的图片的最后调用时间早于所述缓存中其他图片的最后调用时间;以及
如果所述预设比例的图片当前没有控件调用,则清除所述预设比例的图片。
5.如权利要求1-4任一项所述的方法,其特征在于,所述根据控件调用信息对所述缓存中的图片进行管理进一步包括:
通过图片缓存类BitmapCache对所述缓存的图片进行管理,其中,所述BitmapCache类包括:
addCache()函数,用于向所述缓存添加新的被调用的图片;
removeCache()函数,用于将控件个数小于第一预设阈值的图片从所述缓存中清除;以及
removeOldCache()函数,用于当所述缓存的使用空间超过第二预设阈值时,在所述缓存中清除预设比例的图片。
6.如权利要求5所述的方法,其特征在于,所述根据控件调用信息对所述缓存中的图片进行管理进一步包括:
如果所述客户端中控件所调用的图片不存在于所述缓存中,则从服务器获取所述图片;以及
为所述从服务器获取的图片添加控件调用信息,并将所述从服务器获取的图片存储至所述缓存。
7.如权利要求6所述的方法,其特征在于,通过图片类UBitmap管理所述缓存中图片的控件调用信息,其中,每个缓存的图片分别对应一个UBitmap类,所述UBitmap类包括:
UBitmap()函数,用于创建图片对应的UBitmap对象;
recycle()函数,用于将生命周期结束的控件的控件信息从所述控件调用的图片中移除;以及
setBitmap()函数,用于将控件信息封装至图片。
8.如权利要求6所述的方法,其特征在于,所述为所述从服务器获取的图片添加控件调用信息,并将所述从服务器获取的图片存储至所述缓存进一步包括:
通过控件信息类ControlInfo记录所述控件的控件信息;
通过所述UBitmap()函数创建所述从服务器获取的图片对应的UBitmap对象;
通过所述setBitmap()函数将所述控件信息封装至所述从服务器获取的图片;以及
通过所述addCache()函数将所述从服务器获取的图片添加至所述缓存。
9.如权利要求7所述的方法,其特征在于,所述通过图片类UBitmap管理所述缓存中图片的控件调用信息进一步包括:
如果有新的控件调用所述图片,则通过所述setBitmap()函数将所述新的控件的控件信息封装至所述图片,调用所述图片的控件个数加1;以及
如果调用所述图片的一个控件的生命周期结束,则通过所述recycle()函数将所述生命周期结束的控件的控件信息从所述图片中移除,调用所述图片的控件个数减1。
10.如权利要求5所述的方法,其特征在于,所述在所述缓存中清除所述图片进一步包括:
通过所述removeCache()函数在所述缓存中清除所述图片。
11.如权利要求5所述的方法,其特征在于,所述清除所述预设比例的图片进一步包括:
通过所述removeOldCache()函数清除所述缓存中预设比例的图片。
12.一种缓存图片的管理装置,其特征在于,包括:
第一获取模块,用于获取客户端的缓存的图片;
第二获取模块,用于获取所述图片被所述客户端中控件调用的控件调用信息;以及
管理模块,用于根据所述控件调用信息对所述缓存中的图片进行管理。
13.如权利要求12所述的装置,其特征在于,其中,所述控件调用信息包括所述图片的最后调用时间和调用所述图片的控件个数。
14.如权利要求13所述的装置,其特征在于,所述管理模块进一步包括:
第一获取单元,用于获取调用所述图片的控件个数;以及
第一清除单元,用于当所述控件个数小于第一预设阈值时,在所述缓存中清除所述图片。
15.如权利要求14所述的装置,其特征在于,所述管理模块进一步包括:
检测单元,用于检测所述缓存的存储状态;
第二获取单元,用于当所述缓存的使用空间超过第二预设阈值时,根据所述最后调用时间获取所述缓存中预设比例的图片,其中,所述预设比例的图片的最后调用时间早于所述缓存中其他图片的最后调用时间;以及
第二清除单元,用于在所述预设比例的图片当前没有控件调用时,则清除所述预设比例的图片。
16.如权利要求12-15任一项所述的装置,其特征在于,所述管理模块通过图片缓存类BitmapCache对所述缓存的图片进行管理,其中,所述BitmapCache类包括:
addCache()函数,用于向所述缓存添加新的被调用的图片;
removeCache()函数,用于将控件个数小于第一预设阈值的图片从所述缓存中清除;以及
removeOldCache()函数,用于当所述缓存的使用空间超过第二预设阈值时,在所述缓存中清除预设比例的图片。
17.如权利要求16所述的装置,其特征在于,所述管理模块进一步包括:
第三获取单元,用于在所述客户端中控件所调用的图片不存在于所述缓存中时,从服务器获取所述图片;
控件调用管理单元,用于为所述从服务器获取的图片添加控件调用信息;以及
存储单元,用于将所述从服务器获取的图片存储至所述缓存。
18.如权利要求17所述的装置,其特征在于,所述控件调用管理单元通过图片类UBitmap为所述从服务器获取的图片添加控件调用信息,其中,每个缓存的图片分别对应一个UBitmap类,所述UBitmap类包括:
UBitmap()函数,用于创建图片对应的UBitmap对象;
recycle()函数,用于将生命周期结束的控件的控件信息从所述控件调用的图片中移除;以及
setBitmap()函数,用于将控件信息封装至图片。
19.如权利要求18所述的装置,其特征在于,
所述控件调用管理单元通过控件信息类ControlInfo记录所述控件的控件信息,并通过所述UBitmap()函数创建所述从服务器获取的图片对应的UBitmap对象,以及通过通过所述setBitmap()函数将所述控件信息封装至所述从服务器获取的图片;
所述存储单元通过所述addCache()函数将所述从服务器获取的图片添加至所述缓存。
20.如权利要求18所述的装置,其特征在于,
所述控件调用管理单元,在有新的控件调用所述图片时,通过所述setBitmap()函数将所述新的控件的控件信息封装至所述图片,调用所述图片的控件个数加1,以及在调用所述图片的一个控件的生命周期结束时,通过所述recycle()函数将所述生命周期结束的控件的控件信息从所述图片中移除,调用所述图片的控件个数减1。
21.如权利要求16所述的装置,其特征在于,所述第一清除单元通过所述removeCache()函数在所述缓存中清除所述图片。
22.如权利要求16所述的装置,其特征在于,所述第二清除单元通过所述removeOldCache()函数清除所述缓存中预设比例的图片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410075209.4A CN103885753A (zh) | 2014-03-03 | 2014-03-03 | 缓存图片的管理方法、装置和客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410075209.4A CN103885753A (zh) | 2014-03-03 | 2014-03-03 | 缓存图片的管理方法、装置和客户端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103885753A true CN103885753A (zh) | 2014-06-25 |
Family
ID=50954666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410075209.4A Pending CN103885753A (zh) | 2014-03-03 | 2014-03-03 | 缓存图片的管理方法、装置和客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885753A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484235A (zh) * | 2014-11-24 | 2015-04-01 | 北京奇虎科技有限公司 | 一种基于瀑布流技术的内存优化方法及装置 |
CN105487640A (zh) * | 2015-12-15 | 2016-04-13 | 北京京东尚科信息技术有限公司 | 一种安卓手表预加载和缓存图片的方法 |
CN105513005A (zh) * | 2015-12-02 | 2016-04-20 | 魅族科技(中国)有限公司 | 一种内存管理的方法及终端 |
CN105893268A (zh) * | 2016-03-24 | 2016-08-24 | 北京小米移动软件有限公司 | 缓存图片处理方法和装置 |
CN106155591A (zh) * | 2016-07-25 | 2016-11-23 | 广东亿迅科技有限公司 | 一种图片缓存的方法 |
CN107656699A (zh) * | 2017-08-18 | 2018-02-02 | 上海车音智能科技有限公司 | 图片调用方法及装置 |
CN109324983A (zh) * | 2017-07-31 | 2019-02-12 | 武汉斗鱼网络科技有限公司 | 一种自动清理缓存文件的方法、存储介质、设备及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004145759A (ja) * | 2002-10-25 | 2004-05-20 | Canon Inc | 画像処理方法 |
CN101221580A (zh) * | 2008-01-03 | 2008-07-16 | 中兴通讯股份有限公司 | 一种提高嵌入式浏览器页面显示性能的方法 |
CN103309749A (zh) * | 2013-06-25 | 2013-09-18 | 四川九洲电器集团有限责任公司 | 一种基于安卓系统图片资源的内存释放方法 |
CN103353860A (zh) * | 2013-06-28 | 2013-10-16 | 贵阳朗玛信息技术股份有限公司 | 内存管理方法及装置 |
-
2014
- 2014-03-03 CN CN201410075209.4A patent/CN103885753A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004145759A (ja) * | 2002-10-25 | 2004-05-20 | Canon Inc | 画像処理方法 |
CN101221580A (zh) * | 2008-01-03 | 2008-07-16 | 中兴通讯股份有限公司 | 一种提高嵌入式浏览器页面显示性能的方法 |
CN103309749A (zh) * | 2013-06-25 | 2013-09-18 | 四川九洲电器集团有限责任公司 | 一种基于安卓系统图片资源的内存释放方法 |
CN103353860A (zh) * | 2013-06-28 | 2013-10-16 | 贵阳朗玛信息技术股份有限公司 | 内存管理方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484235A (zh) * | 2014-11-24 | 2015-04-01 | 北京奇虎科技有限公司 | 一种基于瀑布流技术的内存优化方法及装置 |
CN104484235B (zh) * | 2014-11-24 | 2017-12-05 | 北京奇安信科技有限公司 | 一种基于瀑布流技术的内存优化方法及装置 |
CN105513005A (zh) * | 2015-12-02 | 2016-04-20 | 魅族科技(中国)有限公司 | 一种内存管理的方法及终端 |
CN105513005B (zh) * | 2015-12-02 | 2019-01-29 | 魅族科技(中国)有限公司 | 一种内存管理的方法及终端 |
CN105487640A (zh) * | 2015-12-15 | 2016-04-13 | 北京京东尚科信息技术有限公司 | 一种安卓手表预加载和缓存图片的方法 |
CN105893268A (zh) * | 2016-03-24 | 2016-08-24 | 北京小米移动软件有限公司 | 缓存图片处理方法和装置 |
CN106155591A (zh) * | 2016-07-25 | 2016-11-23 | 广东亿迅科技有限公司 | 一种图片缓存的方法 |
CN109324983A (zh) * | 2017-07-31 | 2019-02-12 | 武汉斗鱼网络科技有限公司 | 一种自动清理缓存文件的方法、存储介质、设备及系统 |
CN107656699A (zh) * | 2017-08-18 | 2018-02-02 | 上海车音智能科技有限公司 | 图片调用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103885753A (zh) | 缓存图片的管理方法、装置和客户端 | |
US9158699B2 (en) | Memory management techniques | |
CN104808952B (zh) | 数据缓存方法及装置 | |
CN111159436B (zh) | 一种推荐多媒体内容的方法、装置及计算设备 | |
WO2018072408A1 (zh) | 一种内存分析方法、装置、系统以及计算设备 | |
CN103677977A (zh) | 清理移动终端中临时文件的方法、装置和移动终端 | |
CN105760199B (zh) | 一种应用资源加载方法及其设备 | |
EP3958120A1 (en) | Method and device for anonymous page management, terminal device, and readable storage medium | |
CN108334415A (zh) | 一种容错处理方法、装置、终端及存储介质 | |
CN111258921A (zh) | 垃圾内存回收方法及装置、电子设备、存储介质 | |
CN108984295B (zh) | 内存回收方法、计算机装置及计算机可读存储介质 | |
CN107943718A (zh) | 一种清理缓存文件的方法和装置 | |
CN108572898A (zh) | 一种控制接口的方法、装置、设备、以及存储介质 | |
CN110196770A (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
CN106649146A (zh) | 一种内存释放方法及装置 | |
CN110018883A (zh) | 一种虚拟机删除方法、装置、设备及存储介质 | |
CN105893266B (zh) | 用于重新使用文件系统的存储块的方法和装置 | |
CN109144428A (zh) | 一种应用于固态硬盘的垃圾回收方法、设备及介质 | |
CN107912063B (zh) | 一种内存回收方法及装置 | |
CN117453423B (zh) | Gpu显存管理方法和系统,存储介质和电子设备 | |
CN115617504A (zh) | 一种内存管理系统、泄露检测方法及存储介质 | |
CN104424125A (zh) | 移动终端缓存的清理方法、装置及移动终端 | |
CN116166573B (zh) | 控制内存回收的方法、电子设备及存储介质 | |
CN117591327A (zh) | core文件生成方法、装置、电子设备及存储介质 | |
CN109286532B (zh) | 云计算系统中告警信息的管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140625 |
|
RJ01 | Rejection of invention patent application after publication |