一种安卓视图的存取方法和装置与流程

文档序号:16918671发布日期:2019-02-19 19:10阅读:163来源:国知局
一种安卓视图的存取方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种安卓视图的存取方法和装置。



背景技术:

在安卓android系统中,安卓视图view是一个超类,它是安卓系统应用层界面可视化的基本组件单元。而安卓视图集(linearviewset,lvs)可以用于存储高宽和内容类似的安卓视图,布局方向可以是水平或者垂直。而且由于安卓视图集不具备资源回收和复用机制,在一些视图高宽需要动态改变的场景下非常实用。

然而,由于安卓视图集存储的安卓视图数量有限,一般小于12个,所以大大限制了安卓视图集的应用场景。



技术实现要素:

本发明提供了一种安卓视图的存取方法和装置,通过改进安卓视图集的存储结构,解决了安卓视图集存储的安卓视图数量有限的问题,扩展了安卓视图集的应用场景。

第一方面,本发明实施例提供了一种安卓视图的存取方法,所述方法包括:

基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;

获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;

将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;

当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。

可选的,所述获取每个所述待处理安卓视图的期望数值包括:

根据以下公式计算每个所述待处理安卓视图的期望数值:

其中,ε为所述待处理安卓视图中当前计算所述期望数值的安卓视图的期望数值,n为所述安卓视图集被查询的总次数,p为的值,c的取值为0或1,0代表在第i次查询时所述当前计算所述期望数值的安卓视图未被查询到,1代表在所述第i次查询时所述当前计算所述期望数值的安卓视图被查询到。

可选的,所述将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集,包括:

计算每个所述待处理安卓视图的哈希地址;

将所述待处理安卓视图的哈希地址按照所述期望数值从高到低的顺序依次存入所述安卓视图集;

将每个所述待处理安卓视图的键和值按照所述期望数值从高到低的顺序依次存入与其对应的哈希地址对应的位置。

可选的,所述采用顺序查找法在所述安卓视图集中查找所述目标安卓视图,包括:

计算所述目标安卓视图的哈希地址;

按顺序将存储在所述目标安卓视图的哈希地址对应的位置的键与所述目标安卓视图的键进行比较;

将第一个与所述目标安卓视图的键匹配的键作为目标键;

将所述目标键对应的值作为所述目标安卓视图的值。

可选的,所述二维hashmap的第一维度的hash函数使用广义hashmap内置的hashcode函数,所述二维hashmap的第二维度的hash函数使用sdbm函数。

可选的,所述二维hashmap支持动态增长。

第二方面,本发明实施例提供了一种安卓视图的存取装置,所述装置包括:

构建单元,用于基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;

获取单元,用于获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;

存储单元,用于将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;

查找单元,用于当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。

可选的,所述获取单元具体用于:

根据以下公式计算每个所述待处理安卓视图的期望数值:

其中,ε为所述待处理安卓视图中当前计算所述期望数值的安卓视图的期望数值,n为所述安卓视图集被查询的总次数,p为的值,c的取值为0或1,0代表在第i次查询时所述当前计算所述期望数值的安卓视图未被查询到,1代表在所述第i次查询时所述当前计算所述期望数值的安卓视图被查询到。

第三方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述安卓视图的存取方法的任一实施方式。

第四方面,本发明实施例提供了一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述安卓视图的存取方法的任一实施方式。

本发明实施例提供的安卓视图的存取方法中,基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。通过采用二维hashmap构建安卓视图集的存储基型,改进了安卓视图集的存储结构,解决了安卓视图集存储的安卓视图数量有限的问题,扩展了安卓视图集的应用场景。

进一步的,二维hashmap采用二维数组作为数据存储的基本结构,一方面便于存储多种类型的待处理安卓视图,另一方面,二维数组大小固定,存取速度快,结构简单,不会造成额外的损耗。

进一步的,引入待处理安卓视图的期望数值,并将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集,当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图,可以更快地查找到被期望查询的目标安卓视图。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例中安卓视图的存取方法的流程图;

图2为本申请实施例中安卓视图的存取装置的结构示意图;

图3为本申请实施例中计算机设备的结构示意图;

图4为本申请实施例中计算机可读存储介质的结构示意图。

具体实施方式

本发明实施例提供了一种安卓视图的存取方法和装置,通过改进安卓视图集的存储结构,解决了安卓视图集存储的安卓视图数量有限的问题,扩展了安卓视图集的应用场景。

本发明实施例中的技术方案,总体思路如下:

基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。

可见,通过采用二维hashmap构建安卓视图集的存储基型,改进了安卓视图集的存储结构,解决了安卓视图集存储的安卓视图数量有限的问题,扩展了安卓视图集的应用场景。

进一步的,二维hashmap采用二维数组作为数据存储的基本结构,一方面便于存储多种类型的待处理安卓视图,另一方面,二维数组大小固定,存取速度快,结构简单,不会造成额外的损耗。

进一步的,引入待处理安卓视图的期望数值,并将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集,当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图,可以更快地查找到被期望查询的目标安卓视图。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。再者,本文中使用的变量或者函数名称,在一些其他的实现方式中,也可以采用其他的名称表示相同的含义,在此不作限制。

实施例一

本发明实施例一提供一种安卓视图的存取方法,请参考图1,所述方法包括:

s101、基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图。

具体的,hashmap是java集合框架(javacollectionframework)的重要成员,也是map族中最为常用的一种框架。简单地说,hashmap是基于哈希表的map接口的实现,存储的对象同时包含了键key和值value。在hashmap中,会根据hash算法来计算键和值的存储位置并进行快速存取。影响hashmap的性能的两个重要参数包括:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,只要对该哈希表进行重建内部数据结构的rehash操作,就可以将哈希表扩大到具有大约原来两倍的桶数。由于hashmap的容量可以设置得比现有技术的安卓视图集采用的存储结构的容量大得多,所以本实施例基于二维hashmap构建安卓视图集的存储基型,可以解决现有技术的安卓视图集存储的安卓视图数量有限的问题。而且二维hashmap支持动态增长,后续的使用中还可以扩大安卓视图集的存储容量。

另外,本实施中采用的二维hashmap不同于广义上的二维hashmap,广义上的二维hashmap的数据结构中,只是将hashmap作为value,其实就是hashmap内部嵌套hashmap,并未对hashmap的内部数据结构做革命性改动,这也就决定了广义多维hashmap依然维持一维线性结构,因此其存储性能和失效率没有丝毫改善。因此,本实施例采用二维数组作为二维hashmap数据存储的基本结构,相比较广义上的多维hashmap采用的arraylist,二维数组可以存储多种类型的待处理安卓视图,另一方面,二维数组具有大小固定,存取速度快,结构简单,不会造成额外的损耗的特点。

需要说明的是,待处理的安卓视图可以是从现有技术的安卓视图集中获取的已有的安卓视图,或者是接收到的新的安卓视图,或者是系统自身生成的新的安卓视图等,此处不做限制。

s102、获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度。

期望数值越高,安卓视图被期望查询到的程度越高,具体的,获取每个所述待处理安卓视图的期望数值包括但不限于以下几种方式:

方式一,根据以下公式计算每个所述待处理安卓视图的期望数值:

其中,ε为所述待处理安卓视图中当前计算所述期望数值的安卓视图的期望数值,n为所述安卓视图集被查询的总次数,p为的值,c的取值为0或1,0代表在第i次查询时所述当前计算所述期望数值的安卓视图未被查询到,1代表在所述第i次查询时所述当前计算所述期望数值的安卓视图被查询到。

方式二,计算预置时间段内每个所述待处理安卓视图的被查询次数,将该次数作为待处理安卓视图的期望数值。

方式三,计算预置时间段内每个所述待处理安卓视图的被查询概率,将该概率作为待处理安卓视图的期望数值。

方式四,计算预置时间段内每个所述待处理安卓视图的被查询次数,将该次数乘以时间系数的值作为待处理安卓视图的期望数值,所述时间系数与待处理安卓视图每次被查询到的时间呈正相关的关系。例如,时间系数可以为待处理安卓视图每次被查询到的时刻对应的数值的平均值。举个例子,某个待处理安卓视图在预置的时间段内被查询到2次,第一次为时刻18:30,该时刻对应的数值为1830,第二次为时刻19:16,该时刻对应的数值为1916,则平均值为1873,该待处理安卓视图的期望数值为2*1873的值3746。可以理解,采用方式四时,预置的时间段内的时刻对应的数值是递增的。

方式五,计算预置时间段内每个所述待处理安卓视图的被查询的概率,将该概率乘以时间系数的值作为待处理安卓视图的期望数值,所述时间系数与待处理安卓视图每次被查询到的时间呈正相关的关系。方式五与方式四类似,不再赘述。

方式六,直接接收工作人员设置的每个所述待处理安卓视图的期望数值。

上述几种方式,或上述几种方式的结合均不对本实施例造成限制,实际应用中,还可以有其他的获取每个所述待处理安卓视图的期望数值的方式,此处不做限制。

进一步的,还可以按照预置的时间间隔更新每个所述待处理安卓视图的期望数值,从而动态管理每个所述待处理安卓视图的期望数值。

s103、将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集。

具体的,所述将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集,包括:

计算每个所述待处理安卓视图的哈希地址,具体的,根据待处理安卓视图的键和hash函数计算待处理安卓视图的哈希地址,其中,可以将待处理安卓视图按照期望数值从高到低进行排序后再计算哈希地址,也可以计算完哈希地址后再将待处理安卓视图按照期望数值从高到低进行排序,此处不做限制;

将所述待处理安卓视图的哈希地址按照所述期望数值从高到低的顺序依次存入所述安卓视图集,其中,若已对待处理安卓视图基于期望数值从高到低的顺序进行排序,则依次将排序后的待处理安卓视图的哈希地址存入安卓视图集;若没有预先对待处理安卓视图基于期望数值从高到低的顺序进行排序,也可以使用冒泡法等比较的方法,每次筛选出最高期望数值对应的待处理安卓视图,再将该待处理安卓视图的哈希地址存入安卓视图集,直到待处理安卓视图的哈希地址全部存入安卓视图集;

将每个所述待处理安卓视图的键和值按照所述期望数值从高到低的顺序依次存入与其对应的哈希地址对应的位置,类似的,若已对待处理安卓视图基于期望数值从高到低的顺序进行排序,则依次将排序后的待处理安卓视图的键和值存入与其对应的哈希地址对应的位置;若没有预先对待处理安卓视图基于期望数值从高到低的顺序进行排序,也可以使用冒泡法等比较的方法,每次筛选出最高期望数值对应的待处理安卓视图,再将该待处理安卓视图的键和值存入与其对应的哈希地址对应的位置,直到待处理安卓视图的键和值全部存入安卓视图集。

另外,二维hashmap的第一维度的hash函数可以使用广义hashmap内置的hashcode函数,第二维度的hash函数可以使用sdbm函数。具体的,在sdbm中hash值h的计算方式如下:

h=(h<<6)+(h<<6)-h+ch

其中,ch是每个字符的ascii码值,h初始化为0,<<是左移操作符。

s104、当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。

一般来说,哈希查找法的速度快,是哈希表常用的查找方法。但由于本实施例构建的安卓视图集在容量上没有做限制,如果存储的安卓视图超过一定的数量,例如1k,那么继续使用哈希查找法将导致效率低下,因此本实施例先将待处理安卓视图按照期望数值从高到低的顺序依次存入安卓视图集,再采用顺序查找法在安卓视图集中查找目标安卓视图,从而可以较大概率地实现加快查找到目标安卓视图的速度,提高查找效率。具体的,当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图,具体包括:

计算所述目标安卓视图的哈希地址,具体的,根据目标安卓视图的键和hash函数计算目标安卓视图的哈希地址;

按顺序将存储在所述目标安卓视图的哈希地址对应的位置的键与所述目标安卓视图的键进行比较;

将第一个与所述目标安卓视图的键匹配的键作为目标键;

将所述目标键对应的值作为所述目标安卓视图的值,可以理解,查找到目标安卓视图的值即为查到目标安卓视图。

进一步的,若未查找到与所述目标安卓视图的键匹配的目标键,则提示查不到所述目标安卓视图的键对应的安卓视图。

还需要说明的是,本实施例可以应用于内置安卓系统的设备中,包括但不限于安卓电视盒子、安卓电视、安卓手机和安卓平板电脑等设备。

本实施例中,基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。通过采用二维hashmap构建安卓视图集的存储基型,改进了安卓视图集的存储结构,解决了安卓视图集存储的安卓视图数量有限的问题,扩展了安卓视图集的应用场景。

进一步的,本实施例中的二维hashmap采用二维数组作为数据存储的基本结构,一方面便于存储多种类型的待处理安卓视图,另一方面,二维数组大小固定,存取速度快,结构简单,不会造成额外的损耗。

进一步的,本实施例引入待处理安卓视图的期望数值,并将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集,当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图,可以更快地查找到被期望查询的目标安卓视图。

基于同一发明构思,本发明实施例还提供了与实施例一中方法对应的装置,见实施例二。

实施例二

本发明实施例二提供了一种安卓视图的存取装置,请参考图2,所述装置包括:

构建单元201,用于基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;

获取单元202,用于获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;

存储单元203,用于将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;

查找单元204,用于当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。

本实施例中,通过构建单元201基于二维hashmap构建安卓视图集的存储基型,其中,所述二维hashmap采用二维数组作为数据存储的基本结构,所述安卓视图集用于存储待处理安卓视图;通过获取单元202获取每个所述待处理安卓视图的期望数值,所述期望数值用于预判安卓视图被期望查询到的程度;通过存储单元203将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集;当接收到查询目标安卓视图的指令时,通过查找单元204采用顺序查找法在所述安卓视图集中查找所述目标安卓视图。可见,本实施例采用二维hashmap构建安卓视图集的存储基型,改进了安卓视图集的存储结构,解决了安卓视图集存储的安卓视图数量有限的问题,扩展了安卓视图集的应用场景。

进一步的,本实施例的二维hashmap采用二维数组作为数据存储的基本结构,一方面便于存储多种类型的待处理安卓视图,另一方面,二维数组大小固定,存取速度快,结构简单,不会造成额外的损耗。

进一步的,本实施例引入待处理安卓视图的期望数值,并将所述待处理安卓视图按照所述期望数值从高到低的顺序依次存入所述安卓视图集,当接收到查询目标安卓视图的指令时,采用顺序查找法在所述安卓视图集中查找所述目标安卓视图,可以更快地查找到被期望查询的目标安卓视图。

由于本发明实施例二所介绍的装置,为实施本发明实施例一所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。

实施例三

基于同一发明构思,本实施例提供了一种计算机设备300,如图3所示,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时,可以实现上述实施例一的所有步骤,故而在此不再赘述。

实施例四

基于同一发明构思,本实施例提供一种计算机可读存储介质400,如图4所示,其上存储有计算机程序411,该计算机程序411被处理器执行时,可以实现上述实例一的所有步骤,故而在此不再赘述。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1