CN106598588A - 一种加载页面元素的方法及装置 - Google Patents
一种加载页面元素的方法及装置 Download PDFInfo
- Publication number
- CN106598588A CN106598588A CN201611129481.1A CN201611129481A CN106598588A CN 106598588 A CN106598588 A CN 106598588A CN 201611129481 A CN201611129481 A CN 201611129481A CN 106598588 A CN106598588 A CN 106598588A
- Authority
- CN
- China
- Prior art keywords
- control
- gridview
- page elements
- element list
- page
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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
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)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种加载页面元素的方法及装置,其中,该方法包括:从元素列表集合中获取当前需显示的元素列表;根据元素列表包括的页面元素,判断GridView中是否缓存有页面元素对应的缓存控件;如果是,则将页面元素加载至缓存控件中;如果否,则根据页面元素在GridView中创建一个控件,将页面元素加载至创建的控件中。本发明在GridView中缓存有控件,使得在加载页面元素时可以复用缓存的控件,降低了GridView中创建控件和移除控件的操作,大大提升了GridView的性能,提高了页面元素的加载速度和加载效率。
Description
技术领域
本发明涉及终端技术领域,具体而言,涉及一种加载页面元素的方法及装置。
背景技术
GridView(网格视图)是一个控件,它可以看作是一个控件的容器,其内部可以用于存放多个子控件。
当前,终端加载页面时,从服务器获取页面元素,在GridView中创建页面元素对应的子控件,将获取的页面元素填充到创建的子控件中。当用户拖拽页面使页面元素从GridView中溢出时,终端从GridView中移除该页面元素对应的子控件,以实现在显示区域中不显示该页面元素。
现有技术中每当页面元素离开显示区域,都移除该页面元素对应的子控件,当需要加载新的页面元素时再创建新的子控件来添加页面元素,但是移除和创建子控件的过程都非常耗时,大大降低了GridView的性能,使得页面的加载及显示速度很慢。
发明内容
有鉴于此,本发明实施例的目的在于提供一种加载页面元素的方法及装置,在GridView中缓存有控件,使得在加载页面元素时可以复用缓存的控件,降低了GridView中创建控件和移除控件的操作,大大提升了GridView的性能,提高了页面元素的加载速度和加载效率。
第一方面,本发明实施例提供了一种加载页面元素的方法,所述方法包括:
从元素列表集合中获取当前需显示的元素列表;
根据所述元素列表包括的页面元素,判断GridView中是否缓存有所述页面元素对应的缓存控件;
如果是,则将所述页面元素加载至所述缓存控件中;
如果否,则根据所述页面元素在所述GridView中创建一个控件,将所述页面元素加载至创建的所述控件中。
结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述根据所述元素列表包括的页面元素,判断GridView中是否缓存有所述页面元素对应的缓存控件,包括:
获取所述元素列表中页面元素的位置信息;
根据所述位置信息,查看GridView中是否缓存有所述位置信息对应的缓存控件。
结合第一方面,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述将所述页面元素加载至创建的所述控件中之后,还包括:
当需将所述页面元素从所述GridView中移出时,从创建的所述控件中删除所述页面元素,缓存创建的所述控件;
在将所述元素列表包括的所有页面元素都加载至所述GridView中后,若所述GridView中还存在剩余的缓存控件,则隐藏所述剩余的缓存控件。
结合第一方面,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述方法还包括:
从所述元素列表集合中获取后续待显示的预设数目个元素列表;
根据所述预设数目个元素列表,计算元素平均值;
根据所述元素平均值,调整所述GridView中缓存控件的数目。
结合第一方面的第三种可能的实现方式,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述根据所述预设数目个元素列表,计算元素平均值,包括:
分别获取所述预设数目个元素列表中每个元素列表包括的页面元素的数目;
从所述预设数目个元素列表中,去除包括页面元素最多的元素列表,及去除包括页面元素最少的元素列表;
根据剩余的每个元素列表包括页面元素的数目,计算剩余的元素列表包括页面元素的平均值,得到元素平均值。
结合第一方面的第三种可能的实现方式,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述根据所述元素平均值,调整所述GridView中缓存控件的数目,包括:
获取当前所述GridView中缓存控件的数目;
若所述GridView中缓存控件的数目大于所述元素平均值,则计算所述GridView中缓存控件的数目与所述元素平均值之间的差值;
从所述GridView中删除所述差值个缓存控件。
第二方面,本发明实施例提供了一种加载页面元素的装置,所述装置包括:
获取模块,用于从元素列表集合中获取当前需显示的元素列表;
判断模块,用于根据所述元素列表包括的页面元素,判断GridView中是否缓存有所述页面元素对应的缓存控件;
加载模块,用于当所述判断模块判断所述GridView中缓存有所述页面元素对应的缓存控件时,将所述页面元素加载至所述缓存控件中;
创建模块,用于当所述判断模块判断所述GridView中未缓存有所述页面元素对应的缓存控件时,根据所述页面元素在所述GridView中创建一个控件,将所述页面元素加载至创建的所述控件中。
结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述判断模块包括:
第一获取单元,用于获取所述元素列表中页面元素的位置信息;
查看单元,用于根据所述位置信息,查看GridView中是否缓存有所述位置信息对应的缓存控件。
结合第二方面,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述装置还包括:
控件缓存模块,用于当需将所述页面元素从所述GridView中移出时,从创建的所述控件中删除所述页面元素,缓存创建的所述控件;
控件隐藏模块,用于在将所述元素列表包括的所有页面元素都加载至所述GridView中后,若所述GridView中还存在剩余的缓存控件,则隐藏所述剩余的缓存控件。
结合第二方面,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述装置还包括:
调整模块,用于从所述元素列表集合中获取后续待显示的预设数目个元素列表;根据所述预设数目个元素列表,计算元素平均值;根据所述元素平均值,调整所述GridView中缓存控件的数目。
在本发明实施例提供的方法及装置中,从元素列表集合中获取当前需显示的元素列表;根据元素列表包括的页面元素,判断GridView中是否缓存有页面元素对应的缓存控件;如果是,则将页面元素加载至缓存控件中;如果否,则根据页面元素在GridView中创建一个控件,将页面元素加载至创建的控件中。本发明在GridView中缓存有控件,使得在加载页面元素时可以复用缓存的控件,降低了GridView中创建控件和移除控件的操作,大大提升了GridView的性能,提高了页面元素的加载速度和加载效率。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例1所提供的一种加载页面元素方法的第一流程图;
图2示出了本发明实施例1所提供的一种加载页面元素方法的第二流程图;
图3示出了本发明实施例1所提供的一种一次for循环操作的流程示意图;
图4示出了本发明实施例1所提供的另一种一次for循环操作的流程示意图;
图5示出了本发明实施例2所提供的一种加载页面元素的装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到现有技术中每当页面元素离开显示区域,都移除该页面元素对应的子控件,当需要加载新的页面元素时再创建新的子控件来添加页面元素,但是移除和创建子控件的过程都非常耗时,大大降低了GridView的性能,使得页面的加载及显示速度很慢。基于此,本发明实施例提供了一种加载页面元素的方法及装置,下面通过实施例进行描述。
实施例1
参见图1,本发明实施例提供了一种加载页面元素的方法,该方法具体包括以下步骤:
步骤101:从元素列表集合中获取当前需显示的元素列表。
当用户通过终端浏览一个界面时,终端从服务器获取该界面对应的多条数据,获取的每条数据都是一个元素列表,元素列表中包含多个页面元素。页面元素可以为按钮或输入框等。终端将获取的多个元素列表组成元素列表集合,并将元素列表集合存储在内存中。
终端需将元素列表中的页面元素加载到GridView中才能实现将页面元素显示给用户。GridView中每次可以加载一定数目个页面元素,当需要显示元素列表中的页面元素时,终端从内存中存储的元素列表集合中获取当前需显示的元素列表。
步骤102:根据元素列表包括的页面元素,判断GridView中是否缓存有页面元素对应的缓存控件,如果是,则执行步骤103,如果否,则执行步骤104。
在本发明实施例中,第一次通过GridView加载页面元素时创建控件,在移除页面元素时将创建的控件缓存为缓存控件,以便后续再次加载页面元素时可以复用GridView中的缓存控件。
元素列表中包括多个页面元素,对于每个页面元素,终端获取元素列表中页面元素的位置信息;根据该位置信息,查看GridView中是否缓存有该位置信息对应的缓存控件。
上述页面元素的位置信息表示页面元素加载至GridView中后相对于GridView的位置。终端获取到元素列表中页面元素的位置信息后,根据该位置信息,查看GridView中是否有该位置信息对应的缓存控件,如果有,则执行步骤103,如果没有,则执行步骤104。
在本发明实施例中,具体是通过调用GridView中的函数getChildAt(i)来查看GridView中是否存在位置信息i对应的缓存控件。函数getChildAt(i)会返回GridView中位置信息为i的控件。如果位置信息i处有缓存控件,则返回该缓存控件,后续执行步骤103。如果位置信息i处没有缓存控件,则返回值为空,后续执行步骤104。
对于当前需显示的元素列表中的其他每个页面元素,都同上述页面元素,按照上述方式分别判断GridView中是否有其他每个页面元素对应的缓存控件。
步骤103:将页面元素加载至缓存控件中。
当步骤102判断出当前GridView中存在页面元素对应的缓存控件时,即当函数getChildAt(i)的返回值不为空时,表明GridView中位置信息i处的缓存控件是曾经使用过的控件,因此不需要再次创建位置信息i处的控件了,而是直接使用该缓存控件。根据该页面元素包括的数据,设置该缓存控件的属性值,直接将该页面元素加载至其对应的缓存控件中。
通过上述方式直接使用GridView中的缓存控件来加载页面元素,省略了在GridView中创建控件的过程,能够大大提升加载页面元素的速度。
例如,假设页面元素为背景色为黄色,文本数据为“登录”的按钮,其对应的缓存控件为一个button(按钮)控件。则设置该button控件的背景颜色属性为黄色,设置该button控件的文本为“登录”,实现将该页面元素直接加载至该缓存控件中。
步骤104:根据页面元素在GridView中创建一个控件,将页面元素加载至创建的控件中。
当步骤102判断出当前GridView中不存在页面元素对应的缓存控件时,即当函数getChildAt(i)的返回值为空时,表明GridView中位置信息i处没有曾经使用过的控件,此时需要创建一个控件,并将创建的控件添加到GridView中。
本发明实施例中,根据页面元素的类型,在GridView中创建一个页面元素的类型对应的控件。页面元素的类型包括按钮、输入框、下拉列表等。例如,假设页面元素的类型为按钮,则在GridView中创建一个button控件。假设页面元素的类型为下拉列表,则在GridView中创建一个下拉列表控件。
本发明实施例中,通过安卓系统提供的函数LayoutInflate()来进行控件的创建。具体创建的代码示例如下所示:
LayoutInflater.from(gridLayout.getContext()).inflate(R.layout.view_item_home_reco_mobile_item,gridLayout,false)
其中,主要是调用函数LayoutInflater()中的函数inflate()来创建一个控件,函数inflate()需要传入一个被创建控件的标识,上述代码示例中传入的标识为“R.layout.view_item_home_reco_mobile_item”。通过函数LayoutInflater()中的函数inflate(),就能够获取到一个控件的实例化对象。
在本发明实施例中,通过上述方式创建一个新的控件之后,还需将该控件添加到GridView中。本发明实施例调用GridView中的函数addView()将创建的控件添加到GridView中。
通过上述方式创建一个新的控件,并将该新的控件添加到GridView中后,根据页面元素包括的数据,设置创建的控件的属性值,将该页面元素加载至新创建的控件中。
在本发明实施例中,当用户拖拽界面使得需将创建的控件中加载的页面元素从GridView中移出,以便将后续待显示的页面元素加载至GridView中时,从创建的控件中删除页面元素,缓存创建的控件,以便后续加载页面元素时可以复用创建的该控件。
本发明实施例中,对于当前需显示的元素列表中的每个页面元素都可以通过上述步骤103-104的操作将每个页面元素加载至GridView中。在将当前需显示的元素列表包括的所有页面元素都加载至GridView中后,终端还检测GridView中是否还存在剩余的缓存控件,若检测出GridView中还存在剩余的缓存控件,则隐藏剩余的缓存控件。剩余的缓存控件被隐藏后将不再显示在当前界面中。
在本发明实施例中,如果不断的缓存新创建的控件,将会占用大量的内存空间,因此还需要对GridView中的缓存控件进行动态清理,实现根据使用需求进行控件的动态创建及销毁,以达到GridView性能与内存指标的平衡。
本发明实施例通过如下操作对GridView中的缓存控件进行动态清理,具体包括:
从元素列表集合中获取后续待显示的预设数目个元素列表;根据预设数目个元素列表,计算元素平均值;根据元素平均值,调整GridView中缓存控件的数目。
上述计算元素平均值的具体过程包括:
分别获取预设数目个元素列表中每个元素列表包括的页面元素的数目;从预设数目个元素列表中,去除包括页面元素最多的元素列表,及去除包括页面元素最少的元素列表;根据剩余的每个元素列表包括页面元素的数目,计算剩余的元素列表包括页面元素的平均值,得到元素平均值。
在本发明实施例中,如果计算剩余的元素列表包括页面元素的平均值不是整数,则可预先设置取平均值的整数部分作为元素平均值,或者预先设置取平均值的整数部分加1作为元素平均值。
为了便于理解上述计算元素平均值的操作,下面举例进行说明。例如,假设预设数目为10,则从元素列表集合中获取后续待显示的10个元素列表,假设这10个元素列表包括页面元素的数目分别为5、3、7、9、12、4、6、8、11和10,则去除包括12个页面元素的元素列表,及去除包括3个页面元素的元素列表,剩余的8个元素列表包括页面元素的数目分别为5、7、9、4、6、8、11和10,计算这8个元素列表包括页面元素的平均值为7.5。假设预先设置了当计算的平均值不为整数时取平均值的整数部分加1作为元素平均值,则最终得到的元素平均值为8。
通过上述方式计算出元素平均值后,通过如下方式来调整GridView中缓存控件的数目,具体包括:
获取当前GridView中缓存控件的数目;若GridView中缓存控件的数目大于元素平均值,则计算GridView中缓存控件的数目与元素平均值之间的差值;从GridView中删除差值个缓存控件。
获取到当前GridView中缓存控件的数目后,比较GridView中缓存控件的数目与元素平均值,如果GridView中缓存控件的数目小于或等于元素平均值,则说明当前的缓存控件的数目小于后续待显示的页面元素的平均值,此时不需要对GridView中的缓存控件进行缓存清理操作。
如果比较出缓存控件的数目大于元素平均值,说明接下来需要显示的页面元素的平均值比当前已显示的页面元素的数目少,也就是说此时缓存控件的数目比后续需要加载的页面元素的平均值要多,因此需要对GridView中的缓存控件进行缓存清理操作,计算GridView中缓存控件的数目与元素平均值之间的差值,从GridView中删除差值个缓存控件。
从GridView中删除差值个缓存控件时,本发明实施例通过调用GridView中的函数remove()移除多余的缓存控件,确保GridView中缓存控件的数量等于元素平均值。这样就能够保证后续多个元素列表中的页面元素加载时能够达到内存指标和加载速度的平衡。
本发明实施例通过步骤101获取到当前需显示的元素列表后,除通过步骤102-104的操作来加载页面元素外,还可以通过如下步骤S1-S3来加载页面元素,如图2所示,具体包括:
S1:获取当前需显示的元素列表包括页面元素的元素数目。
本发明实施例中,元素列表为一个list(表),可以通过调用list中的函数size()来获取list中的页面元素的数目。函数size()的主要功能是返回当list中的页面元素的个数。
S2:获取GridView中的缓存控件的控件数目。
在本发明实施例中,通过调用GridView中的函数getChildCount(),函数getChildCount()能够返回GridView中当前所包含的缓存控件的个数。
S3:以上述元素数目和控件数目中的最大数目为循环次数,通过for循环的方式将元素列表中的页面元素依次加载至GridView中。
确定出元素列表包括页面元素的元素数目与GridView中的缓存控件的控件数目之间的最大数目。本发明实施例通过调用函数Math()中的函数max()来确定最大数目。函数max()能够返回元素数目和控件数目中的最大值。若元素数目和控件数目相等,则函数max()会返回元素数目和控件数目中的任意一个值。
最大数目为元素数目时for循环的操作过程,与最大数目为控件数目时for循环的操作过程不相同,下面结合附图分别进行具体说明。
如图3所示,当最大数目为元素数目时,一次for循环包括如下步骤A1-A8的操作:
A1:从元素列表中获取一个页面元素,获取该页面元素的位置信息。
A2:查看GridView中是否存在该位置信息对应的缓存控件,如果是,则执行步骤A3,如果否,则执行步骤A4。
A3:获取该缓存控件,将该页面元素直接加载到该缓存控件中,执行步骤A5。
A4:根据该页面信息在GridView中创建一个控件,将该页面信息加载至创建的控件中。
A5:判断当前循环次数是否等于元素数目,如果是,则执行步骤A6,如果否,则执行步骤A7。
A6:判断GridView中是否还存在剩余的缓存控件,如果是,则执行步骤8,如果否,则结束操作。
A7:循环次数加1,返回步骤A1进入下次循环。
A8:隐藏剩余的缓存控件,结束操作。
由于for循环的每次循环的操作过程都相同,所以当最大数目为元素数目时其他每次循环都按照上述步骤A1-A8的过程进行操作。
如图4所示,当最大数目为控件数目时,一次for循环包括如下步骤B1-B8的操作:
B1:从GridView中获取一个缓存控件,获取该缓存控件的位置信息。
缓存控件的位置信息表示缓存控件相对于GridView的位置。
B2:判断元素列表中是否包含位置信息与该缓存控件的位置信息一致的页面元素,如果是,则执行步骤B3,如果否,则执行步骤B4。
B3:获取位置信息与该缓存控件的位置信息一致的页面元素,将该页面元素直接加载至该缓存控件中,执行步骤B5。
B4:隐藏该缓存控件。
B5:判断当前循环次数是否等于控件数目,如果是,则执行步骤B6,如果否,则执行步骤B8。
B6:判断元素列表中是否存在剩余的页面元素,如果是,执行步骤B7,如果否,则结束操作。
B7:根据剩余的页面元素,在GridView中创建剩余的页面元素对应的控件,将剩余的页面元素加载至创建的控件中,结束操作。
B8:循环次数加1,返回B1进入下次循环。
由于for循环的每次循环的操作过程都相同,所以当最大数目为控件数目时其他每次循环都按照上述步骤B1-B8的过程进行操作。
本发明实施例对GridView的功能进行了优化和增强,提出了GridView中的控件缓存策略,同时为了控制GridView中的缓存控件的数量,对GridView中的缓存控件进行动态清理处理,提高了GridView的显示速度,同时又能够很好的控制内存占用情况,兼顾了页面元素的加载速度与内存占用空间大小的平衡。
在本发明实施例中,从元素列表集合中获取当前需显示的元素列表;根据元素列表包括的页面元素,判断GridView中是否缓存有页面元素对应的缓存控件;如果是,则将页面元素加载至缓存控件中;如果否,则根据页面元素在GridView中创建一个控件,将页面元素加载至创建的控件中。本发明在GridView中缓存有控件,使得在加载页面元素时可以复用缓存的控件,降低了GridView中创建控件和移除控件的操作,大大提升了GridView的性能,提高了页面元素的加载速度和加载效率。
实施例2
参见图5,本发明实施例提供了一种加载页面元素的装置,该装置用于执行上述实施例1提供的加载页面元素的方法,该装置包括:
获取模块201,用于从元素列表集合中获取当前需显示的元素列表;
判断模块202,用于根据元素列表包括的页面元素,判断GridView中是否缓存有页面元素对应的缓存控件;
加载模块203,用于当判断模块202判断GridView中缓存有页面元素对应的缓存控件时,将页面元素加载至缓存控件中;
创建模块204,用于当判断模块202判断GridView中未缓存有页面元素对应的缓存控件时,根据页面元素在GridView中创建一个控件,将页面元素加载至创建的控件中。
上述判断模块202包括:
第一获取单元,用于获取元素列表中页面元素的位置信息;
查看单元,用于根据位置信息,查看GridView中是否缓存有位置信息对应的缓存控件。
在本发明实施例中,该装置还包括:
控件缓存模块,用于当需将页面元素从GridView中移出时,从创建的控件中删除页面元素,缓存创建的控件;
控件隐藏模块,用于在将元素列表包括的所有页面元素都加载至GridView中后,若GridView中还存在剩余的缓存控件,则隐藏剩余的缓存控件。
调整模块,用于从元素列表集合中获取后续待显示的预设数目个元素列表;根据预设数目个元素列表,计算元素平均值;根据元素平均值,调整GridView中缓存控件的数目。
上述调整模块包括:
第二获取单元,用于分别获取预设数目个元素列表中每个元素列表包括的页面元素的数目;
去除单元,用于从预设数目个元素列表中,去除包括页面元素最多的元素列表,及去除包括页面元素最少的元素列表;
第一计算单元,用于根据剩余的每个元素列表包括页面元素的数目,计算剩余的元素列表包括页面元素的平均值,得到元素平均值。
上述调整模块包括:
第三获取单元,用于获取当前GridView中缓存控件的数目;
第二计算单元,用于若GridView中缓存控件的数目大于元素平均值,则计算GridView中缓存控件的数目与元素平均值之间的差值;
删除单元,用于从GridView中删除差值个缓存控件。
在本发明实施例中,从元素列表集合中获取当前需显示的元素列表;根据元素列表包括的页面元素,判断GridView中是否缓存有页面元素对应的缓存控件;如果是,则将页面元素加载至缓存控件中;如果否,则根据页面元素在GridView中创建一个控件,将页面元素加载至创建的控件中。本发明在GridView中缓存有控件,使得在加载页面元素时可以复用缓存的控件,降低了GridView中创建控件和移除控件的操作,大大提升了GridView的性能,提高了页面元素的加载速度和加载效率。
本发明实施例所提供的加载页面元素的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种加载页面元素的方法,其特征在于,所述方法包括:
从元素列表集合中获取当前需显示的元素列表;
根据所述元素列表包括的页面元素,判断GridView中是否缓存有所述页面元素对应的缓存控件;
如果是,则将所述页面元素加载至所述缓存控件中;
如果否,则根据所述页面元素在所述GridView中创建一个控件,将所述页面元素加载至创建的所述控件中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述元素列表包括的页面元素,判断GridView中是否缓存有所述页面元素对应的缓存控件,包括:
获取所述元素列表中页面元素的位置信息;
根据所述位置信息,查看GridView中是否缓存有所述位置信息对应的缓存控件。
3.根据权利要求1所述的方法,其特征在于,所述将所述页面元素加载至创建的所述控件中之后,还包括:
当需将所述页面元素从所述GridView中移出时,从创建的所述控件中删除所述页面元素,缓存创建的所述控件;
在将所述元素列表包括的所有页面元素都加载至所述GridView中后,若所述GridView中还存在剩余的缓存控件,则隐藏所述剩余的缓存控件。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述元素列表集合中获取后续待显示的预设数目个元素列表;
根据所述预设数目个元素列表,计算元素平均值;
根据所述元素平均值,调整所述GridView中缓存控件的数目。
5.根据权利要求4所述的方法,其特征在于,所述根据所述预设数目个元素列表,计算元素平均值,包括:
分别获取所述预设数目个元素列表中每个元素列表包括的页面元素的数目;
从所述预设数目个元素列表中,去除包括页面元素最多的元素列表,及去除包括页面元素最少的元素列表;
根据剩余的每个元素列表包括页面元素的数目,计算剩余的元素列表包括页面元素的平均值,得到元素平均值。
6.根据权利要求4所述的方法,其特征在于,所述根据所述元素平均值,调整所述GridView中缓存控件的数目,包括:
获取当前所述GridView中缓存控件的数目;
若所述GridView中缓存控件的数目大于所述元素平均值,则计算所述GridView中缓存控件的数目与所述元素平均值之间的差值;
从所述GridView中删除所述差值个缓存控件。
7.一种加载页面元素的装置,其特征在于,所述装置包括:
获取模块,用于从元素列表集合中获取当前需显示的元素列表;
判断模块,用于根据所述元素列表包括的页面元素,判断GridView中是否缓存有所述页面元素对应的缓存控件;
加载模块,用于当所述判断模块判断所述GridView中缓存有所述页面元素对应的缓存控件时,将所述页面元素加载至所述缓存控件中;
创建模块,用于当所述判断模块判断所述GridView中未缓存有所述页面元素对应的缓存控件时,根据所述页面元素在所述GridView中创建一个控件,将所述页面元素加载至创建的所述控件中。
8.根据权利要求7所述的装置,其特征在于,所述判断模块包括:
第一获取单元,用于获取所述元素列表中页面元素的位置信息;
查看单元,用于根据所述位置信息,查看GridView中是否缓存有所述位置信息对应的缓存控件。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
控件缓存模块,用于当需将所述页面元素从所述GridView中移出时,从创建的所述控件中删除所述页面元素,缓存创建的所述控件;
控件隐藏模块,用于在将所述元素列表包括的所有页面元素都加载至所述GridView中后,若所述GridView中还存在剩余的缓存控件,则隐藏所述剩余的缓存控件。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
调整模块,用于从所述元素列表集合中获取后续待显示的预设数目个元素列表;根据所述预设数目个元素列表,计算元素平均值;根据所述元素平均值,调整所述GridView中缓存控件的数目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611129481.1A CN106598588A (zh) | 2016-12-09 | 2016-12-09 | 一种加载页面元素的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611129481.1A CN106598588A (zh) | 2016-12-09 | 2016-12-09 | 一种加载页面元素的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106598588A true CN106598588A (zh) | 2017-04-26 |
Family
ID=58597909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611129481.1A Pending CN106598588A (zh) | 2016-12-09 | 2016-12-09 | 一种加载页面元素的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106598588A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958831A (zh) * | 2018-06-12 | 2018-12-07 | 北京奇艺世纪科技有限公司 | 一种ViewGroup动态布局方法、装置及电子设备 |
CN110032406A (zh) * | 2019-04-16 | 2019-07-19 | 武汉斗鱼鱼乐网络科技有限公司 | 基于消息的视图加载方法、装置、设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653610A (zh) * | 2015-12-25 | 2016-06-08 | 数源科技股份有限公司 | 一种快速显示大容量数据信息的方法 |
-
2016
- 2016-12-09 CN CN201611129481.1A patent/CN106598588A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653610A (zh) * | 2015-12-25 | 2016-06-08 | 数源科技股份有限公司 | 一种快速显示大容量数据信息的方法 |
Non-Patent Citations (1)
Title |
---|
镇水古月: "gridview 缓存 优化", 《WWW.CNBLOGS.COM/SODE/ARCHIVE/2011/12/21/2295447.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958831A (zh) * | 2018-06-12 | 2018-12-07 | 北京奇艺世纪科技有限公司 | 一种ViewGroup动态布局方法、装置及电子设备 |
CN110032406A (zh) * | 2019-04-16 | 2019-07-19 | 武汉斗鱼鱼乐网络科技有限公司 | 基于消息的视图加载方法、装置、设备和存储介质 |
CN110032406B (zh) * | 2019-04-16 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 基于消息的视图加载方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104636118B (zh) | 基于光平衡的qr二维码自适应二值化处理方法和装置 | |
CN106909333B (zh) | 显示屏的配屏方法及装置 | |
CN107092643A (zh) | 一种弹幕渲染方法及装置 | |
CN106202427B (zh) | 应用处理方法及装置、计算机存储介质 | |
CN106775301A (zh) | 一种终端的截图方法和终端设备 | |
CN109711508A (zh) | 图像处理方法和装置 | |
CN104299186A (zh) | 一种对图片进行马赛克处理的方法及装置 | |
CN106569898A (zh) | 一种资源分配的方法以及移动终端 | |
CN107610047A (zh) | 图像分块处理方法、装置及计算机可读存储介质 | |
CN114071047A (zh) | 帧率控制方法及相关装置 | |
CN112182444A (zh) | 数据渲染系统、方法及电子设备 | |
CN107729570A (zh) | 用于服务器的数据迁移方法和装置 | |
CN109361947A (zh) | 网络资源批量加载方法、智能电视、存储介质及装置 | |
CN106598588A (zh) | 一种加载页面元素的方法及装置 | |
CN108961316A (zh) | 图像处理方法、装置及服务器 | |
CN110297718B (zh) | 界面元素联动处理方法、装置和设备 | |
CN109992188B (zh) | 一种iOS移动端文本滚动显示的实现方法及装置 | |
EP4358028A1 (en) | Graphic rendering method and apparatus, and storage medium | |
CN103678261A (zh) | 一种快速显示ttf字体的方法、装置及设备 | |
CN106844467A (zh) | 数据展示方法和装置 | |
CN109064382B (zh) | 图像信息处理方法及服务器 | |
CN112395036B (zh) | 页面渲染方法及系统 | |
CN111931708A (zh) | 表单生成方法及装置 | |
CN108052516A (zh) | 动态信息中图片的显示方法、装置和移动终端 | |
CN116847126A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170426 |