CN109388459A - 图片加载方法、装置、计算机设备及存储介质 - Google Patents
图片加载方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109388459A CN109388459A CN201811122504.5A CN201811122504A CN109388459A CN 109388459 A CN109388459 A CN 109388459A CN 201811122504 A CN201811122504 A CN 201811122504A CN 109388459 A CN109388459 A CN 109388459A
- Authority
- CN
- China
- Prior art keywords
- picture
- dictionary
- loaded
- anonymous function
- load request
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了一种图片加载方法、装置、计算机设备及存储介质。所述方法包括:若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。通过实施本发明实施例的方法可实现在缓存中获取图片而不需要重复加载图片,且图片可以被销毁从而节约内存。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种图片加载方法、装置、计算机设备及存储介质。
背景技术
随着经济与科技的发展,越来越多的人追求更卓越更有品质的生活,美国的苹果手机进入到国人的生活中且迅速成为了主流。用户使用苹果手机浏览图片时,苹果系统通常有两种加载图片的方式,一种是网络加载的方式,该方式在加载图片时不会缓存图片,仅加载图片,适用于较小的图片以及不常用的图片,这种方式可以降低内存的消耗;另一种是本地加载的方式,该方式在加载图片时会缓存图片,适用于加载较大的图片以及经常使用的图片,这种方式的加载效率高,但是会消耗内存,无法随着数据的销毁而销毁。
发明内容
本发明实施例提供了一种图片加载方法、装置、计算机设备及存储介质,旨在解决缓存的图片无法销毁的问题。
第一方面,本发明实施例提供了一种图片加载方法,其包括:若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。
第二方面,本发明实施例还提供了一种图片加载装置,其包括:第一判断单元,用于若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;获取单元,用于若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;存储单元,用于将所获取的图片通过弱引用字典的方式存储到字典中;加载单元,用于从所述字典中获取所要加载的图片进行加载。
第三方面,本发明实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现上述方法。
本发明实施例提供了一种图片加载方法、装置、计算机设备及存储介质。其中,所述方法包括:若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。本发明实施例由于以弱引用字典的方式将图片存储到字典中,可实现不需要重复加载图片,且图片可以被销毁,节约内存的效果。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的图片加载方法的应用场景示意图;
图2为本发明实施例提供的图片加载方法的流程示意图;
图3为本发明实施例提供的图片加载方法的子流程示意图;
图4为本发明实施例提供的图片加载方法的子流程示意图;
图5为本发明实施例提供的图片加载方法的子流程示意图;
图6为本发明另一实施例提供的图片加载方法的流程示意图;
图7为本发明实施例提供的图片加载装置的示意性框图;
图8为本发明实施例提供的图片加载装置的具体单元的示意性框图;
图9为本发明另一实施例提供的加载装置的示意性框图;以及
图10为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的图片加载方法的应用场景示意图。图2为本发明实施例提供的图片加载方法的示意性流程图。该图片加载方法应用在终端10中,通过终端10与服务器20之间的交互实现。
本方法具体应用在iOS系统中,是基于本地加载方式的一种图片加载方法。用户在使用APP浏览图片时,系统首先需要发送图片加载请求,然后在系统缓存中查找是否存在该图片,若存在该图片则返回该图片,若不存在该图片,则从服务器中下载然后将图片放入系统缓存中;最后从系统缓存中获取该图片进行加载。然而,这种图片加载方式将图片放入系统缓存后,会一直占用系统的内存,一旦将图片放入到系统缓存后就不能销毁,因此会导致内存不足,造成程序崩溃。因此通过本发明对此图片加载的方式进行改进,以实现可将图片销毁进而释放内存。
图2是本发明实施例提供的图片加载方法的流程示意图。如图所示,该方法包括以下步骤S110-140。
S110、若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片。
在一实施例中,字典(NSDictionary)是由键值对组成的数据集合,在本实施例中用于存放图片。键值对指的是键(Key)与值(value)的映射关系,其中,键在字典中是唯一的,数据通过键值对的形式存储在字典里。在本实施例中,键指的是图片的名称,值指的是图片,根据图片的名称可以快速找到图片。
在一实施例中,如图3所示,所述步骤S110可包括步骤S111-S112。
S111、根据图片加载请求获取所要加载的图片的图片名称。
在一实施例中,由于字典中图片的映射关系是根据图片的名称来映射到图片的。所以首先要获取到图片的名称,例如,DCIM1、DCIM2,才能根据图片的名称来找到对应的图片,具体地,通过图片加载请求来获取到该图片的名称。
S112、根据所述图片名称在字典中查找与所述图片名称对应的图片。
在一实施例中,由于图片名称作为图片的关键字,且该图片名称是唯一的通过图片名称在字典中查找对应的图片,例如,图片名称为DCIM1,该DCIM1为人像图,该DCIM1与人像图以键值对的形式存储在字典中,通过图片名称DCIM1在字典中查找即可获取到人像图。
S120、若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片。
在一实施例中,服务器中存放着APP的Bundle文件,其实际是一个资源文件包,用于存放APP所要使用的资源,例如,将各种图片、文本文件组织在一起打包成一个Bundle文件以方便在其他项目中引用包内的资源。具体地,发送图片加载请求从服务器中的Bundle文件中下载,以获取所要加载的图片。
S130、将所获取的图片通过弱引用字典的方式存储到字典中。
在一实施例中,对于一些比较常用的数据或者比较重要的数据,例如,大的高清图片以及历史访问频率高的图片通常都会缓存到内存中,因为重复加载会耗费大量的服务器资源,而缓存则是为了避免重复加载这些比较常用和重要的数据,所以缓存中会保存一个指向内存中数据结构的引用,而这些引用通常都是强引用,所以这些引用会强迫这些常用的数据结构保存在内存中。同样通过字典存储数据时也会强引用数据,强引用指的是数据是通过强引用链来访问数据的,该数据具有非常重要的作用,所以垃圾回收器不会回收该数据,即使在内存不足的时候,系统提出内存告警,垃圾回收器也不会为了解决内存不足而回收强引用的数据,从而导致了数据无法销毁占用内存空间。与强引用相反的是弱引用,弱引用指的数据是通过弱引用链来访问数据的,该数据不具有非常重要的作用,其可以被垃圾回收器回收。因此,通过弱引用字典的方式将图片存储到字典中,使得存储在字典中的图片可以被销毁从而释放内存。
在一实施例中,如图4所示,所述步骤S130可包括步骤S131-S133。
S131、通过匿名函数将所获取的图片进行封装。
在一实施例中,垃圾回收器是用于回收没有被引用的数据,当数据的引用计数器为零时,垃圾回收器才回收该数据。其中,引用计数器指的是垃圾回收器回收垃圾时所用到的算法,就是对于创建的每一个数据都有一个与之关联的计数器,这个计数器记录着该数据被使用的次数。而字典存储数据时默认是强引用,会使数据的引用计数器加一,因此系统原有的存储方式存储的数据垃圾回收器是不会回收的,导致数据无法销毁占用内存空间。而采用弱引用字典的方式存储数据到字典不会影响到数据的引用计数器,因此以弱引用方式存储到字典的数据是可以被垃圾回收器回收的。为了实现弱引用字典,在本实施例中,首先需要通过匿名函数封装图片,匿名函数指的是block,其为带有自动变量的匿名函数。具体地,首先定义匿名函数,然后将图片作为匿名函数的参数,最后再声明匿名函数从而完成匿名函数的封装。
S132、根据所述匿名函数创建映射关系存储到所述字典中以实现弱引用字典。
在一实施例中,在得到匿名函数后创建匿名函数的映射关系,即匿名函数的键值对,用于根据匿名函数的关键字在字典中快速找到匿名函数。由于匿名函数拥有捕获外部变量的功能,在匿名函数中访问一个外部的局部变量,其会持用它的临时状态自动捕获变量值,外部局部变量的变化不会影响它的状态。即通过匿名函数封装后的图片存储到字典中不会改变其引用计数器,且匿名函数是以弱引用指针指向图片的。总的来说,就是将匿名函数当做是图片放入到字典中,字典直接持有匿名函数而不直接持有图片,由于匿名函数的特性,从而实现了弱引用。
在一实施例中,系统原有的存储方式是强引用字典的方式,以强引用字典的方式存储的数据是无法被销毁的。因此,实现了弱引用方式后,将弱引用字典的方式替换系统原来强引用字典的方式,以使得存储在字典中的数据可以被销毁释放内存。
S140、从所述字典中获取所要加载的图片进行加载。
在一实施例中,将图片封装保存到字典之后,再将图片从字典里取出,但由于图片被匿名函数封装了,所以首先要在字典中先找到匿名函数,找到该匿名函数之后再对该匿名函数进行解封得到图片,最后再加载该图片。
在一实施例中,如图5所示,所述步骤S140可包括步骤S141-S142。
S141、根据所述匿名函数的映射关系从所述字典中获取所述匿名函数。
在一实施例中,由于所要加载的图片被匿名函数封装了,因此需要从字典里先获取匿名函数。其中,根据所述匿名函数的映射关系从所述字典中获取所述匿名函数,即根据匿名函数的关键字在字典中查找匿名函数。
S142、将所述匿名函数进行解封得到所要加载的图片以进行加载。
在一实施例中,得到匿名函数后对匿名函数进行解封将图片从匿名函数中提取出来从而得到图片,最后再加载图片以使得用户成功打开图片。
在一实施例中,如图6所述,本发明的图片加载方法除了包括以上步骤S110~S140之外,还包括以下步骤:S150~S160。
S150、根据所述匿名函数的引用计数器判断所述匿名函数是否需要被回收。
在一实施例中,在系统的运行过程中,垃圾回收器会定时的查看数据是否有被引用,若该数据没有被引用,垃圾回收器则会将数据回收。在本实施例中,由于图片被匿名函数封装,通过判断匿名函数的引用计数器是否为零来判定匿名函数是否要被回收。
S160、若所述匿名函数的引用计数器为零,则通过垃圾回收器回收所述匿名函数。
在一实施例中,当匿名函数的引用计数器为零时,即该匿名函数没有被引用,垃圾回收器就会认为该匿名函数是可以被回收的垃圾,从而将该匿名函数回收,而封装在匿名函数的图片则跟随匿名函数的销毁而销毁从而释放内存。
本发明实施例所展示的图片加载方法,通过若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。可以在缓存中获取图片而不需要重复加载图片,且图片可以被销毁从而节约内存。
图7是本发明实施例提供的一种图片加载装置200的示意性框图。如图7所示,对应于以上图片加载方法,本发明还提供一种图片加载装置200。该图片加载装置200包括用于执行上述图片加载方法的单元,该装置可以被配置于台式电脑、平板电脑、手提电脑、等终端中。具体地,请参阅图7,该图片加载装置200包括第一判断单元210、获取单元220、存储单元230以及加载单元240。
第一判断单元210,用于若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片。
在一实施例中,字典(NSDictionary)是由键值对组成的数据集合,在本实施例中用于存放图片。键值对指的是键(Key)与值(value)的映射关系,其中,键在字典中是唯一的,数据通过键值对的形式存储在字典里。在本实施例中,键指的是图片的名称,值指的是图片,根据图片的名称可以快速找到图片。
在一实施例中,如图8所示,所述第一判断单元210可包括子单元:名称获取单元211和查找单元212。
名称获取单元211,用于根据图片加载请求获取所要加载的图片的图片名称。
在一实施例中,由于字典中图片的映射关系是根据图片的名称来映射到图片的。所以首先要获取到图片的名称,例如,DCIM1、DCIM2,才能根据图片的名称来找到对应的图片,具体地,通过图片加载请求来获取到该图片的名称。
查找单元212,用于根据所述图片名称在字典中查找与所述图片名称对应的图片。
在一实施例中,若在字典中找到与图片名称对应的图片,则判定字典中存在所要加载的图片,并从字典中获取该图片进行加载;若在字典中未找到与图片名称对应的图片,则判定字典中不存在所要加载的图片。
获取单元220,用于若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片。
在一实施例中,服务器中存放着APP的Bundle文件,其实际是一个资源文件包,用于存放APP所要使用的资源,例如,将各种图片、文本文件组织在一起打包成一个Bundle文件以方便在其他项目中引用包内的资源。具体地,根据图片加载请求从服务器中的Bundle文件中下载,以获取所要加载的图片。
存储单元230,用于将所获取的图片通过弱引用字典的方式存储到字典中。
在一实施例中,对于一些比较常用的数据或者比较重要的数据通常都会缓存到内存中,因为重复加载会耗费大量的服务器资源,而缓存则是为了避免重复加载这些比较常用和重要的数据,所以缓存中会保存一个指向内存中数据结构的引用,而这些引用通常都是强引用,所以这些引用会强迫这些常用的数据结构保存在内存中。同样通过字典存储数据时也会强引用数据,强引用指的是数据是通过强引用链来访问数据的,该数据具有非常重要的作用,所以垃圾回收器不会回收该数据,即使在内存不足的时候,系统提出内存告警,垃圾回收器也不会为了解决内存不足而回收强引用的数据,从而导致了数据无法销毁占用内存空间。与强引用相反的是弱引用,弱引用指的数据是通过弱引用链来访问数据的,该数据不具有非常重要的作用,其可以被垃圾回收器回收。因此,通过弱引用字典的方式将图片存储到字典中,使得存储在字典中的图片可以被销毁从而释放内存。
在一实施例中,如图8所示,所述存储单元230可包括子单元:封装单元231以及存储子单元232。
封装单元231,用于通过匿名函数将所获取的图片进行封装。
在一实施例中,垃圾回收器是用于回收没有被引用的数据,当数据的引用计数器为零时,垃圾回收器才回收该数据。其中,引用计数器指的是垃圾回收器回收垃圾时所用到的算法,就是对于创建的每一个数据都有一个与之关联的计数器,这个计数器记录着该数据被使用的次数。而字典存储数据时默认是强引用,会使数据的引用计数器加一,因此系统原有的存储方式存储的数据垃圾回收器是不会回收的,导致数据无法销毁占用内存空间。而采用弱引用字典的方式存储数据到字典不会影响到数据的引用计数器,因此以弱引用方式存储到字典的数据是可以被垃圾回收器回收的。为了实现弱引用字典,在本实施例中,首先需要通过匿名函数封装图片,匿名函数指的是block,其为带有自动变量的匿名函数。具体地,首先定义匿名函数,然后将图片作为匿名函数的参数,最后再声明匿名函数从而完成匿名函数的封装。
存储子单元232,用于根据所述匿名函数创建映射关系存储到所述字典中以实现弱引用字典。
在一实施例中,在得到匿名函数后创建匿名函数的映射关系,即匿名函数的键值对,用于根据匿名函数的关键字在字典中快速找到匿名函数。由于匿名函数拥有捕获外部变量的功能,在匿名函数中访问一个外部的局部变量,其会持用它的临时状态自动捕获变量值,外部局部变量的变化不会影响它的状态。即通过匿名函数封装后的图片存储到字典中不会改变其引用计数器,且匿名函数是以弱引用指针指向图片的。总的来说,就是将匿名函数当做是图片放入到字典中,字典直接持有匿名函数而不直接持有图片,由于匿名函数的特性,从而实现了弱引用。
在一实施例中,系统原有的存储方式是强引用字典的方式,以强引用字典的方式存储的数据是无法被销毁的。因此,实现了弱引用方式后,将弱引用字典的方式替换系统原来强引用字典的方式,以使得存储在字典中的数据可以被销毁释放内存。
加载单元240,用于从所述字典中获取所要加载的图片进行加载。
在一实施例中,将图片封装保存到字典之后,再将图片从字典里取出,但由于图片被匿名函数封装了,所以首先要在字典中先找到匿名函数,找到该匿名函数之后再对该匿名函数进行解封得到图片,最后再加载该图片。
在一实施例中,如图8所示,所述加载单元240可包括子单元:获取子单元241和解封单元242。
获取子单元241,用于根据所述匿名函数的映射关系从所述字典中获取所述匿名函数。
在一实施例中,由于所要加载的图片被匿名函数封装了,因此需要从字典里先获取匿名函数。其中,根据所述匿名函数的映射关系从所述字典中获取所述匿名函数,即根据匿名函数的关键字在字典中查找匿名函数。
解封单元242,用于将所述匿名函数进行解封得到所要加载的图片以进行加载。
在一实施例中,得到匿名函数后对匿名函数进行解封将图片从匿名函数中提取出来从而得到图片,最后再加载图片以使得用户成功打开图片。
在一实施例中,如图9所述,所述图片加载装置200还包括以下单元:第二判断单元250和回收单元260。
第二判断单元250,用于根据所述匿名函数的引用计数器判断所述匿名函数是否需要被回收。
在一实施例中,在系统的运行过程中,垃圾回收器会定时的查看数据是否有被引用,若该数据没有被引用,垃圾回收器则会将数据回收。在本实施例中,由于图片被匿名函数封装,通过判断匿名函数的引用计数器是否为零来判定匿名函数是否要被回收。
回收单元260,用于若所述匿名函数的引用计数器为零,则通过垃圾回收器回收所述匿名函数。
在一实施例中,当匿名函数的引用计数器为零时,即该匿名函数没有被引用,垃圾回收器就会认为该匿名函数是可以被回收的垃圾,从而将该匿名函数回收,而封装在匿名函数的图片则跟随匿名函数的销毁而销毁从而释放内存。
本发明实施例所展示的图片加载方法,通过若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。可以在缓存中获取图片而不需要重复加载图片,且图片可以被销毁从而节约内存。
上述图片加载装置可以实现为一种计算机程序的形式,该计算机程序可以在如图10所示的计算机设备上运行。
请参阅图10,图10是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是终端,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。
参阅图10,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种图片加载方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种图片加载方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。
在一实施例中,处理器502在实现所述若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片步骤时,具体实现如下步骤:根据图片加载请求获取所要加载的图片的图片名称;根据所述图片名称在字典中查找与所述图片名称对应的图片。
在一实施例中,处理器502在实现所述将所获取的图片通过弱引用字典的方式存储到字典中步骤时,具体实现如下步骤:将所获取的图片通过匿名函数进行封装;根据所述匿名函数创建映射关系存储到所述字典中以实现弱引用字典。
在一实施例中,处理器502在实现所述从所述字典中获取所要加载的图片进行加载步骤时,具体实现如下步骤:根据所述匿名函数的映射关系从所述字典中获取所述匿名函数;将所述匿名函数进行解封得到所要加载的图片以进行加载。
在一实施例中,处理器502在实现所述从所述字典中获取所要加载的图片进行加载步骤之后,还实现如下步骤:根据所述匿名函数的引用计数器判断所述匿名函数是否需要被回收。若所述匿名函数的引用计数器为零,则通过垃圾回收器回收所述匿名函数。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时使处理器执行如下步骤:若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;将所获取的图片通过弱引用字典的方式存储到字典中;从所述字典中获取所要加载的图片进行加载。
在一实施例中,所述处理器在执行所述程序指令而实现所述若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片步骤时,具体实现如下步骤:根据图片加载请求获取所要加载的图片的图片名称;根据所述图片名称在字典中查找与所述图片名称对应的图片。
在一实施例中,所述处理器在执行所述程序指令而实现所述将所获取的图片通过弱引用字典的方式存储到字典中步骤时,具体实现如下步骤:将所获取的图片通过匿名函数进行封装;根据所述匿名函数创建映射关系存储到所述字典中以实现弱引用字典。
在一实施例中,所述处理器在执行所述程序指令而实现所述从所述字典中获取所要加载的图片进行加载步骤时,具体实现如下步骤:根据所述匿名函数的映射关系从所述字典中获取所述匿名函数;将所述匿名函数进行解封得到所要加载的图片以进行加载。
在一实施例中,所述处理器在执行所述程序指令而实现所述从所述字典中获取所要加载的图片进行加载步骤之后,还实现如下步骤:根据所述匿名函数的引用计数器判断所述匿名函数是否需要被回收;若所述匿名函数的引用计数器为零,则通过垃圾回收器回收所述匿名函数。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种图片加载方法,其特征在于,包括:
若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;
若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;
将所获取的图片通过弱引用字典的方式存储到字典中;
从所述字典中获取所要加载的图片进行加载。
2.根据权利要求1所述的图片加载方法,其特征在于,所述若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片,包括:
根据图片加载请求获取所要加载的图片的图片名称;
根据所述图片名称在字典中查找与所述图片名称对应的图片。
3.根据权利要求1所述的图片加载方法,其特征在于,所述将所获取的图片通过弱引用字典的方式存储到字典中,包括:
将所获取的图片通过匿名函数进行封装;
根据所述匿名函数创建映射关系存储到所述字典中以实现弱引用字典。
4.根据权利要求3所述的图片加载方法,其特征在于,所述从所述字典中获取所要加载的图片进行加载,包括:
根据所述匿名函数的映射关系从所述字典中获取所述匿名函数;
将所述匿名函数进行解封得到所要加载的图片以进行加载。
5.根据权利要求3所述的图片加载方法,其特征在于,还包括:
根据所述匿名函数的引用计数器判断所述匿名函数是否需要被回收;
若所述匿名函数的引用计数器为零,则通过垃圾回收器回收所述匿名函数。
6.一种图片加载装置,其特征在于,包括:
第一判断单元,用于若接收到图片加载请求,根据所述图片加载请求判断字典中是否存在所要加载的图片;
获取单元,用于若判断结果为所述字典中不存在所要加载的图片,则将所述图片加载请求发送至服务器以从服务器中获取所要加载的图片;
存储单元,用于将所获取的图片通过弱引用字典的方式存储到字典中;
加载单元,用于从所述字典中获取所要加载的图片进行加载。
7.根据权利要求6所述的图片加载装置,其特征在于,包括:
封装单元,用于将所获取的图片通过匿名函数进行封装;
存储子单元,用于根据所述匿名函数创建映射关系存储到所述字典中以实现弱引用字典。
8.根据权利要求6所述的图片加载装置,其特征在于,包括:
获取子单元,用于根据所述匿名函数的映射关系从所述字典中获取所述匿名函数;
解封单元,用于将所述匿名函数进行解封得到所要加载的图片以进行加载。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811122504.5A CN109388459A (zh) | 2018-09-26 | 2018-09-26 | 图片加载方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811122504.5A CN109388459A (zh) | 2018-09-26 | 2018-09-26 | 图片加载方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109388459A true CN109388459A (zh) | 2019-02-26 |
Family
ID=65419206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811122504.5A Pending CN109388459A (zh) | 2018-09-26 | 2018-09-26 | 图片加载方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388459A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175053A (zh) * | 2019-04-24 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 图片加载方法及装置 |
CN111785353A (zh) * | 2020-06-29 | 2020-10-16 | 平安国际智慧城市科技股份有限公司 | 数字病理切片的处理方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516018B1 (en) * | 2012-02-28 | 2013-08-20 | Google Inc. | Budgeting native resources in resource-constrained devices that employ a dynamic, garbage-collection based view architecture |
CN105404541A (zh) * | 2015-11-12 | 2016-03-16 | 用友网络科技股份有限公司 | 通过弱引用技术消除缓存对象不一致性的装置和方法 |
CN106502729A (zh) * | 2016-10-09 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种Flash播放器的资源加载方法及系统 |
CN107357650A (zh) * | 2017-06-06 | 2017-11-17 | 武汉斗鱼网络科技有限公司 | 一种基于图片资源的内存自动释放方法及系统 |
-
2018
- 2018-09-26 CN CN201811122504.5A patent/CN109388459A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516018B1 (en) * | 2012-02-28 | 2013-08-20 | Google Inc. | Budgeting native resources in resource-constrained devices that employ a dynamic, garbage-collection based view architecture |
CN105404541A (zh) * | 2015-11-12 | 2016-03-16 | 用友网络科技股份有限公司 | 通过弱引用技术消除缓存对象不一致性的装置和方法 |
CN106502729A (zh) * | 2016-10-09 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种Flash播放器的资源加载方法及系统 |
CN107357650A (zh) * | 2017-06-06 | 2017-11-17 | 武汉斗鱼网络科技有限公司 | 一种基于图片资源的内存自动释放方法及系统 |
Non-Patent Citations (1)
Title |
---|
LEXIAOYAO20: "iOS - 如何实现弱引用字典", pages 1 - 3, Retrieved from the Internet <URL:https://www.jianshu.com/p/51156d4ae885> * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175053A (zh) * | 2019-04-24 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 图片加载方法及装置 |
CN110175053B (zh) * | 2019-04-24 | 2023-10-27 | 创新先进技术有限公司 | 图片加载方法及装置 |
CN111785353A (zh) * | 2020-06-29 | 2020-10-16 | 平安国际智慧城市科技股份有限公司 | 数字病理切片的处理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103377137B (zh) | 使用增强的频繁块检测进行存储去重的方法和系统 | |
US9135572B2 (en) | Method and arrangement for processing data | |
CN104216902B (zh) | 一种基于服务器分页的分页数据装载方法、装置和系统 | |
CN111104448A (zh) | 大数据量Excel文件导出方法、装置、计算机设备及存储介质 | |
CN106775793A (zh) | 一种安卓应用免安装启动的方法、装置及终端 | |
US10642530B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
EP3470992B1 (en) | Efficient storage and utilization of a hierarchical data set | |
CN109635217A (zh) | App的h5页面加载方法、装置、计算机设备和存储介质 | |
CN105930537A (zh) | 一种页面保存的方法及电子设备 | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
CN109388459A (zh) | 图片加载方法、装置、计算机设备及存储介质 | |
CN113504918A (zh) | 设备树配置优化方法、装置、计算机设备和存储介质 | |
CN109446225A (zh) | 数据缓存方法、装置、计算机设备及存储介质 | |
CN113704117B (zh) | 一种算法测试系统、方法及装置 | |
CN110941530A (zh) | 监控数据的获取方法、装置、计算机设备和存储介质 | |
CN114218156A (zh) | 数据导出方法、装置、计算机设备和存储介质 | |
CN105320543B (zh) | 加载软件模块的方法和装置 | |
CN105989152A (zh) | 搜索引擎服务质量的监控方法、装置和系统 | |
CN110020297A (zh) | 一种网页内容的加载方法、装置及系统 | |
US9954971B1 (en) | Cache eviction in a distributed computing system | |
CN116339694A (zh) | 低代码平台组件的扩展方法、装置、电子设备及存储介质 | |
CN114064712A (zh) | 数据访问方法、装置、电子设备及计算机可读存储介质 | |
US9760388B1 (en) | Memory monitoring tool | |
CN110377665B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
US9177073B2 (en) | Identifying implicit services links using service usage information |
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 |