一种在线图片加载方法和系统的制作方法

文档序号:6522168阅读:159来源:国知局
一种在线图片加载方法和系统的制作方法
【专利摘要】本发明公开一种在线图片加载方法和系统,其中,方法包括步骤:A、在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程;B、判断当前页显示的数据是否为实际数据,当是时进入步骤C,否则异步请求当前页的数据,更新当前页的数据,并转入步骤C;C、判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。本发明的图片加载方法解决加载线程过多导致下载不了图片的问题,同时减小了内存占用空间,避免了内存溢出的问题。
【专利说明】一种在线图片加载方法和系统
【技术领域】
[0001]本发明涉及图片快速加载领域,尤其涉及一种在线图片加载方法和系统。
[0002]【背景技术】
现有技术中,由于Android系统内存有限制,在下载大量图片时会占用系统大量内存,若此时的图片和下载图片的线程没有经过有效处理,将会造成内存溢出导致死机现象,而目前采用的多线程异步下载图片的方式,也没有实现对多任务的线程的管理,所以在下载大量图片时经常由于线程阻塞导致某些图片下载不下来的情况,即使图片能够正常下载,在下载到一定数量的图片后,还是会出现占用大量空间造成内存溢出的问题。
[0003]因此,现有技术还有待于改进和发展。

【发明内容】

[0004]鉴于上述现有技术的不足,本发明的目的在于提供一种在线图片加载方法和系统,旨在解决现有技术中的图片加载方法容易造成内存溢出、线程阻塞的问题。
[0005]本发明的技术方案如下:
一种在线图片加载方法,其中,包括步骤:
A、在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程;
B、判断当前页显示的数据是否为实际数据,当是时进入步骤C,否则异步请求当前页的数据,更新当前页的数据,并转入步骤C ;
C、判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。
[0006]所述的在线图片显示方法,其中,所述步骤A之前还包括:
A01、在首次加载时,初始化UI组件,同时初始化一默认对象及用于存放数据对象的数据列表;
A02、异步请求首页的数据,同时更新数据列表中首页的所有数据对象,将其他页的数据对象引用默认对象;
A03、在获取到首页的数据后,根据数据中图片的名称查找是否已缓存此图片,当是时直接读取该图片并显示,当否时,启动下载该图片的线程,下载完成后将图片进行缓存及显
/Jn ο
[0007]所述的在线图片显示方法,其中,所述步骤A具体包括:
AU、在进行滑动翻页停止后,检测屏幕当前起始位置和结束位置,根据检测出的起始位置和结束位置计算出需显示图片的当前页;
A12、释放非当前页的图片,并将非当前页的图片设置为默认对象的图片;
A13、销毁非当前页正在下载图片的线程。
[0008]所述的在线图片显示方法,其中,所述步骤B具体包括:
B1、判断当前页显示的数据是否为实际数据;当是时进入步骤C,当否时进入步骤B2 ; B2、异步请求当前页和当前页相邻两页的数据;
B3、更新当前页和当前页相邻两页的数据,并转入步骤C。
[0009]所述的在线图片显示方法,其中,所述步骤C具体包括:
Cl、判断当前页显示的图片是否为实际图片,当是时进入步骤C3,否则进入步骤C2 ;
C2、判断是否缓存有当前页的图片,当是时,读取此图片并显示;当否时,异步下载图片,并将图片缓存及显示;
C3、不对图片进行更新。
[0010]—种在线图片加载系统,其中,包括:
释放销毁模块,用于在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程;
第一判断模块,用于判断当前页显示的数据是否为实际数据,当是时进入第二判断模块,否则异步请求当前页的数据,更新当前页的数据,并转入第二判断模块;
第二判断模块,用于判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。
[0011]所述的在线图片加载系统,其中,还包括:
初始化模块,用于在首次加载时,初始化Π组件,同时初始化一默认对象及用于存放数据对象的数据列表;
数据更新模块,用于异步请求首页的数据,同时更新数据列表中首页的所有数据对象,将其他页的数据对象引用默认对象;
图片显示模块,用于在获取到首页的数据后,根据数据中图片的名称查找是否已缓存此图片,当是时直接读取该图片并显示,当否时,启动下载该图片的线程,下载完成后将图片进行缓存及显示。
[0012]所述的在线图片加载系统,其中,所述释放销毁模块具体包括:
当前页检测单元,用于在进行滑动翻页停止后,检测屏幕当前起始位置和结束位置,根据检测出的起始位置和结束位置计算出需显示图片的当前页;
图片释放单元,用于释放非当前页的图片,并将非当前页的图片设置为默认对象的图
片;
线程销毁单元,用于销毁非当前页正在下载图片的线程。
[0013]所述的在线图片加载系统,其中,所述第一判断模块具体包括:
数据判断单元,用于判断当前页显示的数据是否为实际数据;
数据请求单元,用于当当前页显示的数据不是实际数据时,异步请求当前页和当前页相邻两页的数据;
数据更新单元,用于更新当前页和当前页相邻两页的数据。
[0014]所述的在线图片加载系统,其中,所述第二判断模块具体包括:
图片判断单元,用于判断当前页显示的图片是否为实际图片;
缓存判断单元,用于当当前页显示的图片不是实际图片时,判断是否缓存有当前页的图片,当是时,读取此图片并显示;当否时,异步下载图片,并将图片缓存及显示。
[0015]有益效果:本发明通过在显示图片时,将非当前页的图片释放以及将非当前页正在下载图片的线程销毁,同时加载当前页所需的数据和图片,并进行更新,因此,本发明的图片加载方法解决加载线程过多导致下载不了图片的问题,同时减小了内存占用空间,避免了内存溢出的问题。
【专利附图】

【附图说明】
[0016]图1为本发明一种在线图片加载方法较佳实施例的流程图。
[0017]图2为图1所示方法中步骤SlOl之前的流程图。
[0018]图3为图1所示方法中步骤SlOl的具体流程图。
[0019]图4为图1所示方法中步骤S102的具体流程图。
[0020]图5为图1所示方法中步骤S103的具体流程图。
[0021]图6为本发明一种在线图片加载系统较佳实施例的结构框图。
[0022]图7为图6所示系统另一较佳实施例的结构框图。
[0023]图8为图6所示系统中释放销毁模块的具体结构框图。
[0024]图9为图6所示系统中第一判断模块的具体结构框图。
[0025]图10为图6所示系统中第二判断模块的具体结构框图。
【具体实施方式】
[0026]本发明提供一种在线图片加载方法和系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027]请参阅图1,图1为本发明一种在线图片加载方法较佳实施例的流程图,如图所示,其包括步骤:
5101、在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程;
5102、判断当前页显示的数据是否为实际数据,当是时进入步骤S103,否则异步请求当前页的数据,更新当前页的数据,并转入步骤S103 ;
5103、判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。
[0028]在上述实施例中,是先获取需显示图片的当前页,然后将非当前页的图片释放以及销毁非当前页正在下载图片的线程,这样当前内存占用空间,以及线程数量就会大大减少,同时为了显示当前页的图片,需先判断当前页显示的数据是否为实际数据,若不是的话则请求当前页的数据,然后再判断当前页显示的图片是否为实际图片,若是的话,则可以不更新图片,若不是的话,则需要将图片更新。通过上述方法,实现了已经加载过的数据和图片不再重复加载,避免了多次重复加载,同时也减小了内存占用空间及线程数量。
[0029]作为本发明另一实施例,对于首次加载的过程,如图2所示,在步骤SlOl之前,还包括如下步骤:
S201、在首次加载时,初始化Π组件,同时初始化一默认对象及用于存放数据对象的数据列表;
首次加载时,只需加载第一页即首页,在进入到界面后,初始化Π组件,同时初始化一个要显示的默认对象,以及用于存放数据对象的数据列表,该默认对象的名称、图片地址、位图等均为默认值。由于此时是首次加载,所以存放数据对象的数据列表为空。
[0030]S202、异步请求首页的数据,同时更新数据列表中首页的所有数据对象,将其他页的数据对象引用默认对象;
此步骤是异步请求网络,以获取首页的数据,更新数据列表中首页的所有数据对象,而非首页的数据对象则引用默认对象,这样即使以后有N个数据加载进来,都是引用一个默认对象,所以数据列表中的数据对象数量等于页面上可显示的实际对象个数加上一个默认对象,减少了对象数量,减小了内存占用空间。
[0031]S203、在获取到首页的数据后,根据数据中图片的名称查找是否已缓存此图片,当是时直接读取该图片并显示,当否时,启动下载该图片的线程,下载完成后将图片进行缓存及显示。
[0032]首页的数据是一个一个地请求,先获取到的先显示,未获取到的显示默认数据和默认图片。而若获取到数据后,则需根据数据中的图片名称来查找是否已缓存此图片,当已经缓存时,可以直接读取该图片并显示,若么没有缓存,则需要启动下载线程,来从网络上下载图片,并下载到的图片进行缓存和显示。在缓存时,可将图片保存至移动终端内置的存储设备上或者是外置的SD卡上。
[0033]在步骤SlOl中,在需显不图片时,需计算出需显不图片的当如页,本实施例是在滑动停止时才计算需要显示图片的当前页,而在滑动翻页时,则不作任何动作,在滑动停止后有四个动作:加载数据、加载图片、释放非当前页、销毁非当前页正在下载图片的线程。这几个动作是异步进行的,所以大大提高了软件的性能和运行速度。下面具体描述各个动作。
[0034]首先,在步骤SlOl中,如图3所示,其具体包括如下步骤:
S301、在进行滑动翻页停止后,检测屏幕当前起始位置和结束位置,根据检测出的起始位置和结束位置计算出需显示图片的当前页;
在滑动翻页停止后,检测屏幕当前起始位置和结束位置,以便计算出需要显示图片的当前页。
[0035]S302、释放非当前页的图片,并将非当前页的图片设置为默认对象的图片;
此步骤是将非当前页的图片释放掉,并将非当前页的图片设置为默认对象的图片,当
滑动至某个非当前页的位置时,再重新加载图片,由于已经加载的图片已经缓存,所以重新加载的过程而不会像传统的加载图片那样缓慢,其加载速度非常快,并不会影响用户体验,同时由于这样设置能够始终保持内存中不会占用大量图片,从而释放了大量内存空间,提高了运行速度。
[0036]S303、销毁非当前页正在下载图片的线程。
[0037]在此步骤中,将非当前页正在下载图片的线程销毁掉,即限制线程个数,销毁无用的线程,如果正在下载图片的线程不是当前页所需显示的,则销毁该线程,从而留给了当前页需显示图片的线程足够的空间,解决了启动线程过多导致图片下载不了的问题。
[0038]在步骤S102中,由于在滑动翻页后,数据列表中已经有N个数据,需要判断当前显示的数据是否是实际数据,如图4所示,其具体包括如下步骤:
S401、判断当前页显示的数据是否为实际数据;当是时进入步骤S404,当否时进入步骤 S402 ;
判断的方法可以是根据当前页在数据列表中相应的位置存放的数据对象是否为默认对象的数据,当是默认对象的数据时,说明当前页显示的数据不是实际数据,需要转入步骤S402中请求数据,反之,则说明当前页显示的数据为实际数据,需转入步骤S404中去请求图片。
[0039]S402、异步请求当前页和当前页相邻两页的数据;
此步骤是异步请求当前页和当前页相邻两页的数据,这是为了方便用户快速获取当前页相邻两页的图片,因为用户在滑动翻页时,可能会翻动至当前页的相邻两页查看图片,所以此时可预先将相邻两页的数据从网络上下载下来。
[0040]S403、更新当前页和当前页相邻两页的数据,并转入步骤S103,进行接下来的图片请求过程;
S404、转入步骤S103,即请求图片。
[0041]在请求到数据之后,可更新当前页和当前页相邻两页的数据,即在数据列表中更新当前页的数据,然后转入步骤S103中请求图片。
[0042]在步骤S103中,需判断当前页显示的图片是否为实际图片,如图5所示,其具体包括:
S501、判断当前页显示的图片是否为实际图片,当是时进入步骤S503,否则进入步骤S502 ;
此步骤可根据数据中的图片名称来判断当前页显示的图片是否为实际图片,若不是的话则进入步骤S502,判断是否缓存有当前页的图片,若是的话,则说明当前页显示的图片是实际图片,可不对图片进行更新。
[0043]S502、判断是否缓存有当前页的图片,当是时,读取此图片并显示;当否时,异步下载图片,并将图片缓存及显示;
此处是判断是否缓存有当前页的图片,若有,则直接读取并显示即可,如没有,还需要异步下载图片,然后缓存,以方便下次滑动到此页时,可快速加载图片。
[0044]S503、不对图片进行更新。
[0045]基于上述方法,本发明还提供一种在线图片加载系统较佳实施例,如图6所示,包括:
释放销毁模块100,用于在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程;
第一判断模块200,用于判断当前页显示的数据是否为实际数据,当是时进入第二判断模块,否则异步请求当前页的数据,更新当前页的数据,并转入第二判断模块;
第二判断模块300,用于判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
[0046]进一步,如图7所示,还包括:
初始化模块400,用于在首次加载时,初始化Π组件,同时初始化一默认对象及用于存放数据对象的数据列表;
数据更新模块500,用于异步请求首页的数据,同时更新数据列表中首页的所有数据对象,将其他页的数据对象引用默认对象;
图片显示模块600,用于在获取到首页的数据后,根据数据中图片的名称查找是否已缓存此图片,当是时直接读取该图片并显示,当否时,启动下载该图片的线程,下载完成后将图片进行缓存及显示。关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
[0047]进一步,如图8所示,所述释放销毁模块100具体包括:
当前页检测单元110,用于在进行滑动翻页停止后,检测屏幕当前起始位置和结束位置,根据检测出的起始位置和结束位置计算出需显示图片的当前页;
图片释放单元120,用于释放非当前页的图片,并将非当前页的图片设置为默认对象的图片;
线程销毁单元130,用于销毁非当前页正在下载图片的线程。关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
[0048]进一步,如图9所示,所述第一判断模块200具体包括:
数据判断单元210,用于判断当前页显示的数据是否为实际数据;
数据请求单元220,用于当当前页显示的数据不是实际数据时,异步请求当前页和当前页相邻两页的数据;
数据更新单元230,用于更新当前页和当前页相邻两页的数据。关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
[0049]进一步,如图10所示,所述第二判断模块300具体包括:
图片判断单元310,用于判断当前页显示的图片是否为实际图片;
缓存判断单元320,用于当当前页显示的图片不是实际图片时,判断是否缓存有当前页的图片,当是时,读取此图片并显示;当时,异步下载图片,并将图片缓存及显示。关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
[0050]综上所述,本发明通过在显示图片时,将非当前页的图片释放以及将非当前页正在下载图片的线程销毁,同时加载当前页所需的数据和图片,并进行更新,因此,本发明的图片加载方法解决加载线程过多导致下载不了图片的问题,同时减小了内存占用空间,避免了内存溢出的问题。
[0051]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【权利要求】
1.一种在线图片加载方法,其特征在于,包括步骤: A、在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程; B、判断当前页显示的数据是否为实际数据,当是时进入步骤C,否则异步请求当前页的数据,更新当前页的数据,并转入步骤C ; C、判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。
2.根据权利要求1所述的在线图片显示方法,其特征在于,所述步骤A之前还包括: A01、在首次加载时,初始化UI组件,同时初始化一默认对象及用于存放数据对象的数据列表; A02、异步请求首页的数据,同时更新数据列表中首页的所有数据对象,将其他页的数据对象引用默认对象; A03、在获取到首页的数据后,根据数据中图片的名称查找是否已缓存此图片,当是时直接读取该图片并显示,当否时,启动下载该图片的线程,下载完成后将图片进行缓存及显
3.根据权利要求2所述的在线图片显示方法,其特征在于,所述步骤A具体包括: AU、在进行滑动翻页停止后,检测屏幕当前起始位置和结束位置,根据检测出的起始位置和结束位置计算出需显示图片的当前页; A12、释放非当前页的图片,并将非当前页的图片设置为默认对象的图片; A13、销毁非当前页正在下载图片的线程。
4.根据权利要求1所述的在线图片显示方法,其特征在于,所述步骤B具体包括: B1、判断当前页显示的数据是否为实际数据;当是时进入步骤C,当否时进入步骤B2 ; B2、异步请求当前页和当前页相邻两页的数据; B3、更新当前页和当前页相邻两页的数据,并转入步骤C。
5.根据权利要求1所述的在线图片显示方法,其特征在于,所述步骤C具体包括: Cl、判断当前页显示的图片是否为实际图片,当是时进入步骤C3,否则进入步骤C2 ; C2、判断是否缓存有当前页的图片,当是时,读取此图片并显示;当否时,异步下载图片,并将图片缓存及显示; C3、不对图片进行更新。
6.一种在线图片加载系统,其特征在于,包括: 释放销毁模块,用于在需显示图片时,根据当前起始位置和结束位置计算出需显示图片的当前页,释放非当前页的图片以及销毁非当前页正在下载图片的线程; 第一判断模块,用于判断当前页显示的数据是否为实际数据,当是时进入第二判断模块,否则异步请求当前页的数据,更新当前页的数据,并转入第二判断模块; 第二判断模块,用于判断当前页显示的图片是否为实际图片,若是则不更新图片,若否则更新当前页显示的图片。
7.根据权利要求6所述的在线图片加载系统,其特征在于,还包括: 初始化模块,用于在首次加载时,初始化Π组件,同时初始化一默认对象及用于存放数据对象的数据列表;数据更新模块,用于异步请求首页的数据,同时更新数据列表中首页的所有数据对象,将其他页的数据对象引用默认对象; 图片显示模块,用于在获取到首页的数据后,根据数据中图片的名称查找是否已缓存此图片,当是时直接读取该图片并显示,当否时,启动下载该图片的线程,下载完成后将图片进行缓存及显示。
8.根据权利要求7所述的在线图片加载系统,其特征在于,所述释放销毁模块具体包括: 当前页检测单元,用于在进行滑动翻页停止后,检测屏幕当前起始位置和结束位置,根据检测出的起始位置和结束位置计算出需显示图片的当前页; 图片释放单元,用于释放非当前页的图片,并将非当前页的图片设置为默认对象的图片; 线程销毁单元,用于销毁非当前页正在下载图片的线程。
9.根据权利要求6所述的在线图片加载系统,其特征在于,所述第一判断模块具体包括: 数据判断单元,用 于判断当前页显示的数据是否为实际数据; 数据请求单元,用于当当前页显示的数据不是实际数据时,异步请求当前页和当前页相邻两页的数据; 数据更新单元,用于更新当前页和当前页相邻两页的数据。
10.根据权利要求6所述的在线图片加载系统,其特征在于,所述第二判断模块具体包括: 图片判断单元,用于判断当前页显示的图片是否为实际图片; 缓存判断单元,用于当当前页显示的图片不是实际图片时,判断是否缓存有当前页的图片,当是时,读取此图片并显示;当时,异步下载图片,并将图片缓存及显示。
【文档编号】G06F9/445GK103823690SQ201310644885
【公开日】2014年5月28日 申请日期:2013年12月5日 优先权日:2013年12月5日
【发明者】杨铁兵 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1