一种界面元素下载的方法和装置制造方法

文档序号:6550574阅读:134来源:国知局
一种界面元素下载的方法和装置制造方法
【专利摘要】本发明实施例提供了一种界面元素下载的方法及装置,所述界面包括第一界面及第二界面,所述第一界面包括第一界面元素,所述第二界面包括第二界面元素;所述的方法包括:当从第一界面切换至第二界面时,停止下载所述第一界面元素;判断所述第二界面中是否存在处于下载未完成状态的第二界面元素;下载所述处于下载未完成状态的第二界面元素。本发明实施例用以从第一界面切换至第二界面时,停止下载第一界面的界面元素,并且,下载第二界面处于下载未完成状态的界面元素,加快第二界面的界面元素下载速度,减少界面卡顿,提升了用户的浏览体验效果。
【专利说明】一种界面元素下载的方法和装置

【技术领域】
[0001]本发明涉及界面处理【技术领域】,特别是涉及一种界面元素下载的方法和一种界面元素下载的装置。

【背景技术】
[0002]界面是设备和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。目前比较常用的是图形用户界面,即采用图片显示界面,与早期的命令行界面相比,显示直接形象,操作简便。
[0003]以安卓Android智能设备为例,每次加载图形用户界面所需的图片时都是在其主线程中进行操作,而在Android智能设备上主线程的操作是堵塞式的操作,即只能等待前一步的操作完成之后,才能继续进行下一步的操作,因此在加载图形用户界面所需的图片时,如果快速进行界面的切换,可能会导致界面比较卡顿。比如从界面a切换到界面b,即使从界面a被快速切换到了界面b,基于Android智能设备上主线程的操作是堵塞式的操作,界面a会继续进行下载图片的操作,则界面b的图片资源下载需要等待界面a的图片资源下载完成后,那么界面b的图片资源下载就比较慢,造成界面卡顿,不能及时展示当前界面b的图片,界面的浏览体验效果变差。


【发明内容】

[0004]本发明实施例所要解决的技术问题是提供一种界面元素下载的方法,用以从第一界面切换至第二界面时,停止下载第一界面的界面元素,并且,下载第二界面处于下载未完成状态的界面元素,加快第二界面的界面元素下载速度,减少界面卡顿,提升了用户的浏览体验效果。
[0005]相应的,本发明实施例还提供了一种界面元素下载的装置,用以保证上述方法的实现及应用。
[0006]为了解决上述问题,本发明公开了一种界面元素下载的方法,所述界面包括第一界面及第二界面,所述第一界面包括第一界面元素,所述第二界面包括第二界面元素;所述的方法包括:
[0007]当从第一界面切换至第二界面时,停止下载所述第一界面元素;
[0008]判断所述第二界面中是否存在处于下载未完成状态的第二界面元素;
[0009]下载所述处于下载未完成状态的第二界面元素。
[0010]优选地,在所述从第一界面切换至第二界面,停止下载所述第一界面元素的步骤之前,还包括:
[0011]创建哈希表HashMap及下载队列Queue ;所述下载队列Queue中包括用于下载所述第一界面元素的下载线程;
[0012]所述停止下载所述第一界面元素的步骤为:
[0013]移除在所述下载队列Queue中所述第一界面元素的下载线程。
[0014]优选地,所述哈希表HashMap包括键值对,所述键值对包括key值及对应的value值,所述value值包括FALSE ;所述判断第二界面中是否存在处于下载未完成状态的第二界面元素的步骤包括:
[0015]获取所述第二界面元素的位置索引;
[0016]在所述哈希表HashMap查找与所述第二界面元素的位置索引一致的key值;
[0017]判断所述key值对应的value值是否为FALSE ;
[0018]若是,则判定所述第二界面元素处于下载未完成状态;
[0019]若否,则判定所述第二界面元素处于下载完成状态。
[0020]优选地,所述第二界面元素的位置索引为统一资源定位符URL,所述下载处于下载未完成状态的第二界面元素的步骤包括:
[0021]在所述下载队列Queue中按序添加处于下载未完成状态的第二界面元素的下载线程;
[0022]采用所述下载线程从所述统一资源定位符URL中下载所述第二界面元素。
[0023]优选地,在所述下载队列Queue中添加处于下载未完成状态的第二界面元素的下载线程的步骤之后,还包括:
[0024]统计所述下载队列Queue中下载线程的第一数量;
[0025]判断在所述第一数量是否超过第一预设数量;
[0026]若是,则在移除在所述下载队列Queue中最先添加的超过第一预设数量的下载线程。
[0027]优选地,所述采用下载线程从所述统一资源定位符URL中下载所述第二界面元素的步骤包括:
[0028]采用所述下载队列Queue中第二预设数量的下载线程开始从所述统一资源定位符URL中下载所述第二界面元素;
[0029]为所述下载队列Queue中的未开始下载的其他下载线程添加对象锁obj.wait ;
[0030]若所述已经开始下载的下载线程下载完所述第二界面元素,则发送解除对象锁通知obj.notify至其他下载线程;
[0031]采用所述其他下载线程开始从所述统一资源定位符URL中下载所述第二界面元素。
[0032]优选地,所述value值还包括TRUE,在所述采用下载线程从所述统一资源定位符URL中下载所述第二界面元素的步骤之后,还包括:
[0033]当所述第二界面元素下载完成后,将所述哈希表HashMap中所述第二界面元素对应的value值修改为TRUE。
[0034]优选地,所述停止下载所述第一界面元素的步骤包括:
[0035]统计所述已经开始下载的第一界面元素的第二数量;
[0036]判断所述第二数量是否超过第二预设数量;
[0037]若所述第二数量没有超过第二预设数量,则判断所述已经开始下载的第一界面元素是否超过预设大小;
[0038]若是,则继续下载所述第一界面元素;若否,则停止下载所述第一界面元素。
[0039]本发明实施例还公开了一种界面元素下载的装置,所述界面包括第一界面及第二界面,所述第一界面包括第一界面元素,所述第二界面包括第二界面元素;所述的装置包括:
[0040]停止模块,用于在从第一界面切换至第二界面时,停止下载所述第一界面元素;
[0041]判断模块,用于在判断所述第二界面中是否存在处于下载未完成状态的第二界面元素;
[0042]下载模块,用于在下载所述处于下载未完成状态的第二界面元素。
[0043]优选地,所述装置还包括:
[0044]创建模块,用于创建哈希表HashMap及下载队列Queue ;所述下载队列Queue中包括用于下载所述第一界面元素的下载线程;
[0045]所述停止模块包括:
[0046]线程移除子模块,用于移除在所述下载队列Queue中所述第一界面元素的下载线程。
[0047]优选地,所述哈希表HashMap包括键值对,所述键值对包括key值及对应的value值,所述value值包括FALSE ;所述判断模块包括:
[0048]元素获取子模块,用于获取所述第二界面元素的位置索引;
[0049]哈希表查找子模块,用于在所述哈希表HashMap查找与所述第二界面元素的位置索引一致的key值;
[0050]状态判断子模块,用于判断所述key值对应的value值是否为FALSE ;若是,则执行调用第一判定子模块,若否,则调用第二判定子模块;
[0051]第一判定子模块,用于判定所述第二界面元素处于下载未完成状态;
[0052]第二判定子模块,用于判定所述第二界面元素处于下载完成状态。
[0053]优选地,所述第二界面元素的位置索引为统一资源定位符URL,所述下载模块包括:
[0054]添加子模块,用于在所述下载队列Queue中按序添加处于下载未完成状态的第二界面元素的下载线程;
[0055]元素下载子模块,用于采用所述下载线程从所述统一资源定位符URL中下载所述第二界面元素。
[0056]优选地,所述装置还包括:
[0057]第一统计模块,用于统计所述下载队列Queue中下载线程的第一数量;
[0058]第一数量模块,用于统计判断在所述第一数量是否超过第一预设数量;若是,则
[0059]移除模块,用于在移除在所述下载队列Queue中最先添加的超过第一预设数量的下载线程。
[0060]优选地,所述元素下载子模块包括:
[0061]元素下载单元,用于采用所述下载队列Queue中第二预设数量的下载线程开始从所述统一资源定位符URL中下载所述第二界面元素;
[0062]对象锁添加单元,用于为所述下载队列Queue中的未开始下载的其他下载线程添加对象锁obj.wait ;
[0063]对象锁解除单元,用于在所述已经开始下载的下载线程下载完所述第二界面元素时,贝1J发送解除对象锁通知obj.notify至其他下载线程;
[0064]元素下载单元,用于采用所述其他下载线程开始从所述统一资源定位符URL中下载所述第二界面元素。
[0065]优选地,所述value值还包括TRUE,还包括:
[0066]修改模块,用于在所述第二界面元素下载完成后,将所述哈希表HashMap中所述第二界面元素对应的value值修改为TRUE。
[0067]优选地,所述停止模块包括:
[0068]第二统计子模块,用于统计所述已经开始下载的第一界面元素的第二数量;
[0069]第二数量判断子模块,用于判断所述第二数量是否超过第二预设数量;若所述第二数量没有超过第二预设数量,则调用
[0070]元素大小判断子模块,用于判断所述已经开始下载的第一界面元素是否超过预设大小;若是,则调用继续下载子模块,若否,则调用停止下载子模块;
[0071]继续下载子模块,用于继续下载所述第一界面元素;
[0072]停止下载子模块,用于停止下载所述第一界面元素。
[0073]与现有技术相比,本发明实施例包括以下优点:
[0074]在本发明实施例中,当从第一界面切换到第二界面时,停止下载第一界面元素,并且如果第二界面存在未下载的第二界面元素,则继续下载未下载的第二界面元素,因此,相对于传统需要等待第一界面元素下载完成,才能继续下载第二界面元素的下载机制,本发明实施例优先下载当前切换的界面元素,可以减少界面卡顿,大大提高了界面的浏览体验效果。
[0075]在本发明实施例中,对于下载队列Queue中的下载线程数目进行控制,如果下载队列Queue中的下载线程数目超过预设数量,则将下载队列Queue中最先进入的下载线程移除,避免下载队列Queue中的下载线程过多,造成管理混乱。另外,本发明实施例对于下载队列Queue中正在进行的下载线程数目进行控制,如果下载队列Queue中正在进行的下载线程数目超过预设数量,则下载队列Queue中的其他下载线程将进行等待,只有正在进行的下载线程其中一个完成了下载,在下载队列Queue中的下一下载线程才可以开始进行下载。由于设备及网络带宽资源的限制,对于正在进行的下载线程数目进行控制,可以减轻设备及网络带宽资源的负担,但是同时仍然可以满足下载界面元素的下载速度的需求。
[0076]在本发明实施例中,当界面的界面元素下载完成后,还可以对该界面元素进行标识,那么当再次切换到该界面时,不需要重复下载该界面的界面元素,界面展示速度加快,大大提高了浏览体验效果。

【专利附图】

【附图说明】
[0077]图1是本发明的一种界面元素下载的方法实施例1的步骤流程图;
[0078]图2是本发明的一种界面元素下载的方法实施例2的步骤流程图;
[0079]图3是本发明的一种列表中界面快速滑动的示意图;
[0080]图4是本发明的一种界面切换的示意图;
[0081]图5是本发明的一种界面元素下载的装置实施例的结构框图。

【具体实施方式】
[0082]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0083]实施例一:
[0084]参照图1,示出了本发明的一种界面元素下载的方法实施例1的步骤流程图,所述界面可以包括第一界面及第二界面,所述第一界面可以包括第一界面元素,所述第二界面可以包括第二界面元素;所述的方法具体可以包括如下步骤:
[0085]步骤101,当从第一界面切换至第二界面时,停止下载所述第一界面元素;
[0086]在具体实现中,当用户在进入设备中的界面时,需要加载该界面所需的界面元素,供给用户浏览及使用。其中,界面元素可以包括图片、音频、视频、文本等其他资源。
[0087]应用本发明实施例,当从界面a切换到界面b时,将停止下载界面a的界面元素,避免因为下载界面a的界面元素而导致界面b的界面元素的下载缓慢,造成界面b出现卡顿的现象。
[0088]步骤102,判断所述第二界面中是否存在处于下载未完成状态的第二界面元素;
[0089]步骤103,下载所述处于下载未完成状态的第二界面元素。
[0090]在具体实现中,当进行界面切换时,将停止下载被切换界面的界面元素,并且开始下载当前界面的界面元素。但是,当前界面可能存在以前曾经下载过,在本发明实施例中,可以只需要对于未下载的界面元素,即处于下载未完成状态的界面元素执行下载动作,而对于已下载的界面元素,即处于下载完成状态的界面元素不执行下载动作。
[0091]由于不需要重复下载当前界面曾经下载过界面元素,可以避免分配有限的网络资源,故对于需要下载的界面元素下载速度可以加快,那么该界面展示速度也可以加快,浏览体验效果将大大提闻。
[0092]实施例二:
[0093]参照图2,示出了本发明的一种界面元素下载的方法实施例2的步骤流程图,所述界面可以包括第一界面及第二界面,所述第一界面可以包括第一界面元素,所述第二界面可以包括第二界面元素;所述的方法具体可以包括如下步骤:
[0094]步骤201,创建哈希表HashMap及下载队列Queue ;所述下载队列Queue中包括用于下载所述第一界面元素的下载线程;
[0095]在本发明实施例中,仓Il建在java中可以根据键值对(key, value)直接进行访问的数据结构哈希表HashMap,以及,创建全局的下载队列Queue,当需要下载界面的界面元素时,将在下载队列Queue中添加的该界面元素的下载线程。
[0096]步骤202,当从第一界面切换至第二界面时,移除在所述下载队列Queue中所述第一界面元素的下载线程;
[0097]在本发明实施例中,如果要停止下载被切换界面的界面元素,可以将下载队列Queue中的该界面的界面元素的下载线程移除,则该界面的界面元素的下载动作停止。
[0098]步骤203,判断所述第二界面中是否存在处于下载未完成状态的第二界面元素;
[0099]在本发明的一种优选实施例中,所述哈希表HashMap可以包括键值对,所述键值对可以包括key值及对应的value值,所述value值可以包括FALSE ;在这种情况下,所述步骤203可以包括如下子步骤:
[0100]子步骤S11,获取所述第二界面元素的位置索引;
[0101]子步骤S12,在所述哈希表HashMap查找与所述第二界面元素的位置索引一致的key 值;
[0102]子步骤S13,判断所述key值对应的value值是否为FALSE ;若是,则执行子步骤S14,若否,则执行子步骤S15;
[0103]子步骤S14,判定所述第二界面元素处于下载未完成状态;
[0104]子步骤S15,判定所述第二界面元素处于下载完成状态。
[0105]在本发明实施例中,哈希表HashMap中可以包括键值对〈key, value〉,其中,key值可以用于表示界面元素的位置索引,value值可以用于表示界面元素的下载状态。例如,对于哈希表HashMap的键值对〈String, Boolean), key值可以是采用字符串String表示的数据类型,value值可以是采用布尔Boolean表示的数据类型,其中,当value值为FALSE时,则该界面元素的下载状态为下载未完成状态,为TRUE时该界面元素的下载状态为下载完成状态。
[0106]当获取到界面元素的位置索引时,在哈希表HashMap查找是否存在一致的key值,若存在,则获取key值对应的value值,其中,若value值为FALSE,则可以判定界面元素的下载状态为下载未完成状态,若value值不为FALSE,则可以判定界面元素的下载状态为下载完成状态;或者,若value值为TRUE,则可以判定界面元素的下载状态为下载完成状态,若value值不为TRUE,则可以判定界面元素的下载状态为下载未完成状态。
[0107]需要说明的是,可以采用键值对之外的方式来记录界面元素的下载状态以及位置索引,比如采用0、1记录界面元素的下载状态,本发明实施例对此不作限制。
[0108]步骤204,下载所述处于下载未完成状态的第二界面元素。
[0109]在本发明的一种优选实施例中,所述第二界面元素的位置索引可以为统一资源定位符URL,在这种情况下,所述步骤203可以包括如下子步骤:
[0110]子步骤S21,在所述下载队列Queue中按序添加处于下载未完成状态的第二界面元素的下载线程;
[0111]子步骤S22,采用所述下载线程从所述统一资源定位符URL中下载所述第二界面元素。
[0112]在本发明实施例中,哈希表HashMap中的key值可以是作为界面元素的唯一的URL (Uniform Resource Locator,统一资源定位符),value值则是对应该界面元素的下载状态。以界面元素为图片作为示例,假设界面八有三张图片31,&2,&3,所述&1,&2,&3对应的URL分别为1,2,3,则哈希表HashMap中al,a2,a3的key值分别为1,2,3,key值对应的value值则用于是表示al,a2,a3是否已经下载的标识位,其中标识位的值可以为下载完成状态TRUE,或者下载未完成状态FALSE。在切换至界面A的时候可以通过查询哈希表HashMap的key值来查询图片al,a2,a3是否已经下载完成,如果al已经下载完成,贝U不需要在下载队列Queue添加al的下载线程进行下载,只需要在下载队列Queue添加的a2,a3的下载线程进行下载。
[0113]在本发明的另一种优选实施例中,所述步骤204可以包括如下子步骤:
[0114]子步骤S31,统计所述下载队列Queue中下载线程的第一数量;
[0115]子步骤S32,判断在所述第一数量是否超过第一预设数量;若是,则执行子步骤S33 ;
[0116]子步骤S33,移除在所述下载队列Queue中最先添加的超过第一预设数量的下载线程。
[0117]在本发明实施例中的下载队列Queue,服从先进先出的原则。下载队列Queue初始化的容量,即下载队列Queue中下载线程的数目,如果在下载队列Queue中添加的用于下载界面元素的下载线程初始化的容量时,将优先移除下载队列Queue先进的下载线程。具体地,下载队列Queue初始化的容量可以为30。
[0118]具体而言,可以采用线程池控制下载队列Queue中下载线程的数目。线程池是一种多线程处理形式,在处理过程中将下载界面元素的任务添加到下载队列Queue,然后在创建下载线程后自动启动这些任务。当在下载队列Queue中添加新的下载线程的时候,记录现在正在进行的下载线程的数目threadCount+1,线程结束的时候将下载线程的数目threadCount-Ι ;当下载线程的数目threadCount超过预设数量(比如30)时,将优先移除下载队列Queue先进的下载线程,以控制下载线程的数目。
[0119]在本发明的又一种优选实施例中,所述子步骤S22可以包括如下子步骤:
[0120]子步骤S22-1采用所述下载队列Queue中第二预设数量的下载线程开始从所述统一资源定位符URL中下载所述第二界面元素;
[0121]子步骤S22-2为所述下载队列Queue中的未开始下载的其他下载线程添加对象锁obj.wait ;
[0122]子步骤S22-3若所述已经开始下载的下载线程下载完所述第二界面元素,则发送解除对象锁通知obj.notify至其他下载线程;
[0123]子步骤S22-4,采用所述其他下载线程开始从所述统一资源定位符URL中下载所述第二界面元素。
[0124]在本发明实施例中,下载线程加载到下载队列Queue之后并没有立刻开始进行界面元素的下载操作,可以是由设备内部的线程池模块进行控制的。当下载队列Queue同时开始的下载线程的数目threadCount〉= 2时,则在下载队列Queue中的其他下载线程使用一个对象同步锁机制(每个Java对象都有且只有一个同步锁,在任何时刻,最多只允许一个下载线程拥有这把锁,当下载线程试图执行以带有synchronized (this)标记的代码块时,下载线程必需先获得this关键字引用的Stack对象的锁)(threadOb j.wait O ;)进行等待,当正在下载的下载线程结束的时候采用(threadOb j.notify O ;)通知解除此锁,之后其他的下载线程才能开始进行下载界面元素的操作。即在要开始下载线程之前的时候使用synchronized (obj)来进行同步控制,如果同时开始的下载线程的数目于threadCount〉=2,则获取obj的对象锁obj.wait O ,下载后续线程的开始走到同步代码块的时候synchronized (obj),因为obj已经被加锁,则会进行等待,不会再开始新的下载线程,只有等到已经开始的下载线程结束,此时obj.notify O解除对象锁,后续的下载线程才能再次进入synchronized (obj)同步块,开始下载操作。synchronized可以锁定一个对象或方法,synchronized期间不被其他的对象或方法调用。
[0125]例如,现在下载队列Queue中有30的下载线程,有2个正在进行的下载线程,则下载队列Queue中的其他28个下载线程因为有同步锁控制则进行等待,不会立即开始下载,当2个正在进行的下载线程有一个下载完成时,下载队列Queue中的其他28个下载线程最先进入的下载进程可以进行下载,以此类推,直至下载队列Queue中全部下载线程完成下载操作。这种做法能够优先保证2个界面元素的下载,如果同时开始的下载线程的数目过多,下载界面元素的速度会过慢,对设备资源消耗也过大,并且,当进行界面切换时终止这些下载线程消耗的资源也过大。
[0126]在本发明的一种优选实施例中,所述value值还可以包括TRUE,在所述子步骤S22之后,还可以包括如下子步骤:
[0127]子步骤S31,当所述第二界面元素下载完成后,将所述哈希表HashMap中所述第二界面元素对应的value值修改为TRUE。
[0128]在本发明实施例中,如果界面元素下载完成,可以将哈希表HashMap该界面元素对应的value值修改为TRUE,表示该界面元素处于下载完成状态。当再次切换到此界面时,如果发现该界面的界面元素的value值为TRUE,则表示为处于下载完成状态的界面元素,则不需要重复下载,由于不需要在重新下载该界面的界面元素,界面可以较快速进行切换。
[0129]具体而言,可以参照图3所示的本发明的一种列表中界面快速滑动的示意图,在列表页中包括有三个界面A,B, C,界面A,B,C中包含若干图片,列表页可以快速滑动进行界面的切换,当切换至如图3所示的,界面C为可见区域,界面A,B为不可见区域的时候,此时通过检测哈希表HashMap中判断界面C相应位置的图片是否已经下载,如果没有进行下载的,则将界面C中所有未下载图片的下载地址全部加载到下载队列Queue中,则下载队列Queue中的下载线程自动开始下载图片,在完成之后可以将图片设置到界面C上,并且可以置哈希表HashMap中标志位为TRUE,则下次在加载到界面C之后不需要在重新下载。
[0130]当界面C在展示的时候,每个图片位置J已经对应好的下载URL为k,将J位置添加到下载队列Queue进行下载之后,下载完成之后会发送一个带有J标志的消息到界面(UI)线程(注:在Android中的界面(UI)线程,能够操作界面的主线程和其他的线程,但是不能直接对界面进行操作)中,界面(UI)线程会根据J标志来查找界面中,具体的是哪一个界面(此处是C)来设置下载完成的图片。
[0131]在本发明的一种优选实施例中,所述步骤204可以包括如下子步骤:
[0132]子步骤S41,统计所述已经开始下载的第一界面元素的第二数量;
[0133]子步骤S42,判断所述第二数量是否超过第二预设数量;
[0134]子步骤S43,若所述第二数量没有超过第二预设数量,则判断所述已经开始下载的第一界面元素是否超过预设大小;若是,则执行子步骤S44 ;若否,则执行子步骤S45 ;
[0135]子步骤S44,继续下载所述第一界面元素;
[0136]子步骤S45,停止下载所述第一界面元素。
[0137]在本发明实施例中,假设从界面A快速切换到界面B,则将界面B中界面元素的下载线程全部加载到下载队列Queue中,此时界面A中已经添加的下载线程则会被挤出下载队列Queue。但是,考虑到此时被挤出下载队列Queue中的界面A的下载线程可能已经发起了网络请求,网络连接成功,并且界面元素已经下载一半,此时如果终止连接,阻止下载,那么下次切换时还需要再重新下载该界面的界面元素,即如果单纯将其挤出下载队列Queue,以后还需要网络连接的重复建立,那么已经下载一半的界面元素也比较浪费资源。另外,一般界面元素的大小通常也不会超过1M,如果从界面A快速切换到B界面之后,只继续下载较少数量的界面元素的速度也是比较快的,当然多个界面元素(比如图片)累加时就会比较慢,因此在本发明实施例中对于正在下载的预设数量(比如2个)的下载线程,可以在其下载完成后,才从下载队列Queue中移除。
[0138]需要说明的是,如果此处被切换的界面正在下载的界面元素的大小超过了预设值,比如超过10M,那么可以立即终止掉连接,来尽快下载当前切换界面的界面元素,避免当前界面的界面元素下载过慢而出现卡顿现象,保证用户浏览体验效果。
[0139]综上所述,在本发明实施例中,对于下载队列Queue中的下载线程数目进行控制,如果下载队列Queue中的下载线程数目超过预设数量,则将下载队列Queue中最先进入的下载线程移除,避免下载队列Queue中的下载线程过多,造成管理混乱。另外,本发明实施例对于下载队列Queue中正在进行的下载线程数目进行控制,如果下载队列Queue中正在进行的下载线程数目超过预设数量,则下载队列Queue中的其他下载线程将进行等待,只有正在进行的下载线程其中一个完成了下载,在下载队列Queue中的下一下载线程才可以开始进行下载。由于设备及网络带宽资源的限制,对于正在进行的下载线程数目进行控制,可以减轻设备及网络带宽资源的负担,但是同时仍然可以满足下载界面元素的下载速度的需求,保证用户浏览体验效果。在本发明实施例中,当界面的界面元素下载完成后,还可以对该界面元素进行标识,那么当再次切换到该界面时,不需要重复下载该界面的界面元素,界面展示速度加快,大大提高了浏览体验效果。
[0140]参照图4所示的本发明的一种界面切换的示意图,在不同的界面进行切换的时候,使用下载队列Queue进行控制,来优先下载当前界面的图片数据,能提升浏览体验。比如,在用户浏览计算机或者终端等其他设备上的界面时,当从界面A,C切换到界面B时,则停止下载界面A,C的界面元素,并且判断界面B是否存在处于下载未完成状态的界面B的界面元素,如果存在,则继续下载处于下载未完成状态的界面B的界面元素,如果不存在,则直接获取处于下载完成状态的界面B的界面元素进行设置。
[0141]本发明实施例采用优先下载当前切换的界面元素的下载方式,可以减少界面卡顿,大大提高了界面的浏览体验效果,对于图片及文本等界面元素的切换均适用,比如界面A展示50条网络文本数据,界面B展示60条网络文本数据,从界面A快速切换到界面B时,可以终止界面A中的网络访问请求而优先访问界面B的网络访问请求。由于在实际中图片的大小大于文本,所需的下载时间更长,因此本发明实施例在图片的效果将更好些。
[0142]需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0143]实施例三:
[0144]参照图5,示出了本发明一种界面元素下载的装置实施例的结构框图,所述界面可以包括第一界面及第二界面,所述第一界面可以包括第一界面元素,所述第二界面可以包括第二界面元素;所述的装置具体可以包括如下模块:
[0145]停止模块501,用于在从第一界面切换至第二界面时,停止下载所述第一界面元素;
[0146]在本发明的一种优选实施例中,所述装置还可以包括如下模块:
[0147]创建模块,用于创建哈希表HashMap及下载队列Queue ;所述下载队列Queue中包括用于下载所述第一界面元素的下载线程;
[0148]所述停止模块包括:
[0149]线程移除子模块,用于移除在所述下载队列Queue中所述第一界面元素的下载线程。
[0150]判断模块502,用于在判断所述第二界面中是否存在处于下载未完成状态的第二界面元素;
[0151]在本发明的一种优选实施例中,所述哈希表HashMap可以包括键值对,所述键值对可以包括key值及对应的value值,所述key值可以为界面元素的唯一索引,所述value值可以为界面元素的下载状态,所述下载状态可以包括下载未完成状态FALSE ;所述判断模块502可以包括如下子模块:
[0152]元素获取子模块,用于获取所述第二界面元素的位置索引;
[0153]哈希表查找子模块,用于在所述哈希表HashMap查找与所述第二界面元素的位置索引一致的key值;
[0154]状态判断子模块,用于判断所述key值对应的value值是否为FALSE ;若是,则执行调用第一判定子模块,若否,则调用第二判定子模块;
[0155]第一判定子模块,用于判定所述第二界面元素处于下载未完成状态;
[0156]第二判定子模块,用于判定所述第二界面元素处于下载完成状态。
[0157]下载模块503,用于在下载所述处于下载未完成状态的第二界面元素。
[0158]在本发明的一种优选实施例中,所述第二界面元素的位置索引可以为统一资源定位符URL,所述下载模块503可以包括如下子模块:
[0159]添加子模块,用于在所述下载队列Queue中按序添加处于下载未完成状态的第二界面元素的下载线程;
[0160]元素下载子模块,用于采用所述下载线程从所述统一资源定位符URL中下载所述第二界面元素。
[0161]在本发明的一种优选实施例中,所述装置还可以包括如下模块:
[0162]第一统计模块,用于统计所述下载队列Queue中下载线程的第一数量;
[0163]第一数量模块,用于统计判断在所述第一数量是否超过第一预设数量;若是,则
[0164]移除模块,用于在移除在所述下载队列Queue中最先添加的超过第一预设数量的下载线程。
[0165]在本发明的一种优选实施例中,所述元素下载子模块可以包括如下单元:
[0166]元素下载单元,用于采用所述下载队列Queue中第二预设数量的下载线程开始从所述统一资源定位符URL中下载所述第二界面元素;
[0167]对象锁添加单元,用于为所述下载队列Queue中的未开始下载的其他下载线程添加对象锁obj.wait ;
[0168]对象锁解除单元,用于在所述已经开始下载的下载线程下载完所述第二界面元素时,则发送解除对象锁通知obj.notify至其他下载线程;
[0169]元素下载单元,用于采用所述其他下载线程开始从所述统一资源定位符URL中下载所述第二界面元素。
[0170]在本发明的一种优选实施例中,所述下载状态还可以包括下载完成状态TRUE,所述装置还可以包括如下模块:
[0171]修改模块,用于在所述第二界面元素下载完成后,将所述哈希表HashMap中所述第二界面元素对应的value值修改为下载完成状态TRUE。
[0172]在本发明的一种优选实施例中,所述停止模块可以包括如下子模块:
[0173]第二统计子模块,用于统计所述已经开始下载的第一界面元素的第二数量;
[0174]第二数量判断子模块,用于判断所述第二数量是否超过第二预设数量;若所述第二数量没有超过第二预设数量,则调用,
[0175]元素大小判断子模块,用于判断所述已经开始下载的第一界面元素是否超过预设大小;若是,则调用继续下载子模块,若否,则调用停止下载子模块;
[0176]继续下载子模块,用于继续下载所述第一界面元素;
[0177]停止下载子模块,用于停止下载所述第一界面元素。
[0178]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0179]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0180]本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0181]本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0182]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0183]这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0184]尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0185]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0186]以上对本发明所提供的一种界面元素下载的方法和一种界面元素下载的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种界面元素下载的方法,其特征在于,所述界面包括第一界面及第二界面,所述第一界面包括第一界面元素,所述第二界面包括第二界面元素;所述的方法包括: 当从第一界面切换至第二界面时,停止下载所述第一界面元素; 判断所述第二界面中是否存在处于下载未完成状态的第二界面元素; 下载所述处于下载未完成状态的第二界面元素。
2.根据权利要求1所述的方法,其特征在于,在所述从第一界面切换至第二界面,停止下载所述第一界面元素的步骤之前,还包括: 创建哈希表HashMap及下载队列Queue ;所述下载队列Queue中包括用于下载所述第一界面元素的下载线程; 所述停止下载所述第一界面元素的步骤为: 移除在所述下载队列Queue中所述第一界面元素的下载线程。
3.根据权利要求2所述的方法,其特征在于,所述哈希表HashMap包括键值对,所述键值对包括key值及对应的value值,所述value值包括FALSE ;所述判断第二界面中是否存在处于下载未完成状态的第二界面元素的步骤包括: 获取所述第二界面元素的位置索引; 在所述哈希表HashMap查找与所述第二界面元素的位置索引一致的key值; 判断所述key值对应的value值是否为FALSE ; 若是,则判定所述第二界面元素处于下载未完成状态; 若否,则判定所述第二界面元素处于下载完成状态。
4.根据权利要求2或3所述的方法,其特征在于,所述第二界面元素的位置索引为统一资源定位符URL,所述下载处于下载未完成状态的第二界面元素的步骤包括: 在所述下载队列Queue中按序添加处于下载未完成状态的第二界面元素的下载线程; 采用所述下载线程从所述统一资源定位符URL中下载所述第二界面元素。
5.根据权利要求4所述的方法,其特征在于,在所述下载队列Queue中添加处于下载未完成状态的第二界面元素的下载线程的步骤之后,还包括: 统计所述下载队列Queue中下载线程的第一数量; 判断在所述第一数量是否超过第一预设数量; 若是,则在移除在所述下载队列Queue中最先添加的超过第一预设数量的下载线程。
6.根据权利要求4所述的方法,其特征在于,所述采用下载线程从所述统一资源定位符URL中下载所述第二界面元素的步骤包括: 采用所述下载队列Queue中第二预设数量的下载线程开始从所述统一资源定位符URL中下载所述第二界面元素; 为所述下载队列Queue中的未开始下载的其他下载线程添加对象锁obj.wait ; 若所述已经开始下载的下载线程下载完所述第二界面元素,则发送解除对象锁通知obj.notify至其他下载线程; 采用所述其他下载线程开始从所述统一资源定位符URL中下载所述第二界面元素。
7.根据权利要求4所述的方法,其特征在于,所述value值还包括TRUE,在所述采用下载线程从所述统一资源定位符URL中下载所述第二界面元素的步骤之后,还包括: 当所述第二界面元素下载完成后,将所述哈希表HashMap中所述第二界面元素对应的value值修改为TRUE。
8.根据权利要求1或2所述的方法,其特征在于,所述停止下载所述第一界面元素的步骤包括: 统计所述已经开始下载的第一界面元素的第二数量; 判断所述第二数量是否超过第二预设数量; 若所述第二数量没有超过第二预设数量,则判断所述已经开始下载的第一界面元素是否超过预设大小; 若是,则继续下载所述第一界面元素;若否,则停止下载所述第一界面元素。
9.一种界面元素下载的装置,其特征在于,所述界面包括第一界面及第二界面,所述第一界面包括第一界面元素,所述第二界面包括第二界面元素;所述的装置包括: 停止模块,用于在从第一界面切换至第二界面时,停止下载所述第一界面元素; 判断模块,用于在判断所述第二界面中是否存在处于下载未完成状态的第二界面元素; 下载模块,用于在下载所述处于下载未完成状态的第二界面元素。
10.根据权利要求9所述的装置,其特征在于,还包括: 创建模块,用于创建哈希表HashMap及下载队列Queue ;所述下载队列Queue中包括用于下载所述第一界面元素的下载线程; 所述停止模块包括: 线程移除子模块,用于移除在所述下载队列Queue中所述第一界面元素的下载线程。
11.根据权利要求10所述的装置,其特征在于,所述哈希表HashMap包括键值对,所述键值对包括key值及对应的value值,所述value值包括FALSE ;所述判断模块包括: 元素获取子模块,用于获取所述第二界面元素的位置索引; 哈希表查找子模块,用于在所述哈希表HashMap查找与所述第二界面元素的位置索引一致的key值; 状态判断子模块,用于判断所述key值对应的value值是否为FALSE ;若是,则执行调用第一判定子模块,若否,则调用第二判定子模块; 第一判定子模块,用于判定所述第二界面元素处于下载未完成状态; 第二判定子模块,用于判定所述第二界面元素处于下载完成状态。
12.根据权利要求10或11所述的装置,其特征在于,所述第二界面元素的位置索引为统一资源定位符URL,所述下载模块包括: 添加子模块,用于在所述下载队列Queue中按序添加处于下载未完成状态的第二界面元素的下载线程; 元素下载子模块,用于采用所述下载线程从所述统一资源定位符URL中下载所述第二界面元素。
13.根据权利要求12所述的装置,其特征在于,还包括: 第一统计模块,用于统计所述下载队列Queue中下载线程的第一数量; 第一数量模块,用于统计判断在所述第一数量是否超过第一预设数量;若是,则移除模块,用于在移除在所述下载队列Queue中最先添加的超过第一预设数量的下载线程。
14.根据权利要求12所述的装置,其特征在于,所述元素下载子模块包括: 元素下载单元,用于采用所述下载队列Queue中第二预设数量的下载线程开始从所述统一资源定位符URL中下载所述第二界面元素; 对象锁添加单元,用于为所述下载队列Queue中的未开始下载的其他下载线程添加对象锁 obj.wait ; 对象锁解除单元,用于在所述已经开始下载的下载线程下载完所述第二界面元素时,则发送解除对象锁通知obj.notify至其他下载线程; 元素下载单元,用于采用所述其他下载线程开始从所述统一资源定位符URL中下载所述第二界面元素。
15.根据权利要求12所述的装置,其特征在于,所述value值还包括TRUE,还包括: 修改模块,用于在所述第二界面元素下载完成后,将所述哈希表HashMap中所述第二界面元素对应的value值修改为TRUE。
16.根据权利要求9或10所述的装置,其特征在于,所述停止模块包括: 第二统计子模块,用于统计所述已经开始下载的第一界面元素的第二数量; 第二数量判断子模块,用于判断所述第二数量是否超过第二预设数量;若所述第二数量没有超过第二预设数量,则调用 元素大小判断子模块,用于判断所述已经开始下载的第一界面元素是否超过预设大小;若是,则调用继续下载子模块,若否,则调用停止下载子模块; 继续下载子模块,用于继续下载所述第一界面元素; 停止下载子模块,用于停止下载所述第一界面元素。
【文档编号】G06F17/30GK104133835SQ201410283700
【公开日】2014年11月5日 申请日期:2014年6月23日 优先权日:2014年6月23日
【发明者】闵范福 申请人:海视云(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1