具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对装置、模块或单元进行区分,并非用于限定这些装置、模块或单元一定为不同的装置、模块或单元,也并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
为了更好的对本公开实施例中的方案进行说明,下面首先对本公开涉及的相关技术术语进行介绍和解释:
cell内存对象通过给定的布局规范(例如纵向排列、横向排列以及瀑布流排列等中任一项)进行排列,用户通过滑动可以切换展示不同的经过渲染的cell内存对象,对于某些应用程序,用户发布的一条信息可以称之为一个cell内存对象,一个cell内存对象中可以包括文字、图像、视频以及音频中至少一项内容信息。
屏幕上滑动的容器称为列表(list),在cell分页展示的场景下,用户每次滑动一般可以滑动一屏的距离(即可滑动的list的大小为一屏的距离),滑动一屏的距离只能展示当前屏幕界面下一屏或上一屏的内容,本公开不仅限于cell分页场景,但是在cell分页场景下其优势更加明显。
本公开用于用户非连续滑动的场景下,当终端设备确定当前展示页面展示的cell(即cell内存对象,后续所表达的cell均指cell内存对象)处于相对静止状态时,本公开可以对当前展示页面展示的cell之前的cell和/或之后的cell进行cell预渲染处理,这样在检测到用户滑动操作时,可以直接展示预渲染后的cell内存对象,相当于在展示cell之前已经完成了cell预渲染,节省了cell预渲染的时间,从而加快了展示cell内存对象的速度。
请参照图1,本公开提供了一种cell预渲染的方法,该方法具体可以由电子设备执行,该电子设备可以是终端设备,具体包括以下步骤:
步骤S101、当检测到预渲染单元格cell的触发条件时,获取待预渲染的至少一个cell内存对象;
在本实施例中,至少一个cell内存对象为预先存储的、相连续的至少一个cell内存对象,至少一个cell内存对象存在排列上的先后次序。
步骤S102、获取与当前展示页面展示的cell相连续的至少一个cell的元数据;
终端设备获取与当前展示页面展示的cell相连续的至少一个cell的元数据,终端设备可以向服务器发送该至少一个cell的元数据的标识以获取相应数量的元数据,或终端设备也可以从本地数据库中获取预先存储的至少一个cell的元数据。
cell的元数据是指用于渲染的元数据,可以是文本、数字、图片链接以及视频链接中至少一项,cell元数据只有计算机程序可识别的,对于用户无感知,所以需要经过渲染处理才能展现给用户。
一屏(或一个list或一页展示页面,该展示页面可以是上述当前展示页面)每次可展示的cell的个数可以根据实际需要配置,展示页面展示的cell的个数可以是一个或一个以上,也可以展示某一cell的部分内容,例如可以在展示页面展示1个cell以及另一个cell的1/3的内容。
步骤S103、基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理;
步骤S104、将预渲染后的cell内存对象存储至预渲染队列。
终端设备基于至少一个元数据分别进行至少一个cell内存对象的预渲染,一个cell元数据可以用于一个cell内存对象的预渲染过程。
渲染后的cell内存对象定义了cell中展示的内容信息以及该内容信息对应的各元素(图片、文字、图像等)的布局。例如一段文本对应的字体以及实际渲染并显示出来的位图,图片下载或加载后并加以渲染后得到的位图数据,视频下载或加载并加以渲染后得到的视频帧,以及各cell中各元素的位置以及大小等等。
终端设备基于终端设备的内存大小以及终端设备展示页面一屏可展示的cell数量确定每次预渲染的cell数量,一种可能的情况是,终端设备每次预渲染的cell数量可以是一屏可展示的cell数量,例如,一屏可展示n个cell,n为大于0的整数或分数均可,n为分数时表示可在展示页面上展示cell的部分内容,n为整数时,cell内存对象以及元数据的个数均为n,n为分数时,将分数部分作为一个完整的cell,即即使终端设备只展示该cell的部分内容,也预渲染一个完整的cell。
在本实施中预渲染队列为预渲染后的cell内存对象排列形成的队列,终端设备依据至少一个cell内存对象的排列次序,依次将预渲染后的cell内存对象存储至预渲染队列,这样在检测到用户滑动操作时就可以从预渲染队列中取出预渲染后的cell内存对象进行展示。
在本实施例中,检测到预渲染单元格cell的触发条件时,可以获取待预渲染的至少一个cell内存对象,同时获取与当前展示页面展示的cell相连续的至少一个cell的元数据,可以基于至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理,并将预渲染后的cell内存对象存储至预渲染队列,这样在检测到用户滑动操作时可以直接从预渲染队列中获取预渲染后的cell内存对象并展示,可见本公开可以在展示cell内存对象之前先完成cell预渲染处理,避免了在展示cell内存对象时同步渲染cell所带来的时间延迟,提升了平均帧率,能快速的展示cell内存对象,同时本公开也减轻了设备的数据处理压力。
在本公开实施中还存在复用队列,复用队列为cell内存对象排列形成的队列,复用队列中的cell内存对象可以进行复用,如上述cell内存对象的复用指的改变cell内存对象对应的元数据,从而将在该cell用于展示不同的内容,cell复用队列中的cell预渲染后存储于预渲染队列,这样在检测到用户滑动操作时就可以从预渲染队列中获取cell内存对象并进行展示,下面,针对上述图1所示实施例进行展开说明:
可选的,上述步骤S101中的触发条件包括以下至少一项:
当前展示页面展示的cell的展示时长大于预置展示时长;
检测到用户针对当前展示页面的滑动操作的滑动距离不超过cell切换的临界滑动距离。
在本实施例中,cell预渲染的触发条件可以是当前展示页面展示的cell的展示时长大于预置展示时长,即可以认为用户正在消费或浏览当前展示页面的cell,即当前展示页面展示的cell处于上述相对静止状态,终端设备自动触发cell预渲染流程,预置展示时长可以是0.5s;cell预渲染的触发条件还可以是用户针对当前展示页面的滑动操作的滑动距离不超过cell切换的临界滑动距离,也可以认为用户正在消费或浏览当前展示页面展示的cell,即当前展示页面展示的cell处于上述相对静止状态,终端设备自动触发cell预渲染流程,这种情况一般针对当前展示页面展示部分cell的场景,例如当前展示页面展示有某一cell以及另一cell的部分内容,用户滑动可以将另一cell未展示的部分内容滑动到当前展示页面上展示,只要用户没有滑动到展示另一cell后续待展示的cell,即可以认为用户滑动操作的滑动距离没有超过临界滑动距离,可见在本实施例中,临界滑动距离并不是一个固定的距离,例如另一cell未展示的内容占另一cell的4/5,很明显比另一cell未展示的内容占另一cell的1/5时可以滑动的临界滑动距离要大。
在本实施例中,对于用户首次滑动场景,也可以认为在展示初始的cell之前处于上述相对静止状态,这样在用户首次滑动前也可以对初始展示的cell进行预渲染。
在满足上述预渲染的触发条件时,触发终端设备获取cell内存对象,可选的,在步骤S101中获取待预渲染的至少一个cell内存对象,具体包括:
从复用队列中获取至少一个cell内存对象;
若复用队列中不存在内存对象,则创建至少一个cell内存对象。
终端设备可以初始创建cell内存对象,并将cell内存对象依序排列存储于复用队列,终端设备检测到上述预渲染cell的触发条件时,可以从复用队列中获取待预渲染的至少一个cell内存对象,如果复用队列中不存在cell内存对象,可能的情况是初始创建的cell内存对象已被全部提取进行cell预渲染或初始并未创建cell内存对象或初始创建的cell内存对象处于向用户展示的状态,则终端设备创建上述待预渲染的至少一个cell内存对象。
获取cell内存对象之后,还需要获取元数据,可选的,步骤S102中的元数据包括以下至少一项:
预定展示位置在当前展示页面展示的cell之前,且与当前展示页面展示的cell相连续的至少一个cell的元数据;
预定展示位置在当前展示页面展示的cell之后,且与当前展示页面展示的cell相连续的至少一个cell的元数据。
在本实施例中,情况a为:预渲染预定展示位置在当前展示页面展示的cell之前的cell,这种情况下元数据为在预定展示位置在当前展示页面展示的cell之前,且与当前展示页面展示的cell相连续的至少一个cell的元数据,情况b为:预渲染当前展示页面展示的cell之后的cell,这种情况下的元数据为预定展示位置在当前展示页面展示的cell之后,且与当前展示页面展示的cell相连续的至少一个cell的元数据,当然也可以同时预渲染这两种情况下的cell,定义这种情况为情况c。
在本实施例中,如果预渲染任一种情况下的cell,相比于现有技术,均只需要复用以及渲染单一方向的cell,内存开销基本等同现有的方案,同时在当前展示页面展示的cell处于上述相对静止状态触发预渲染cell的流程时,存在额外的计算开销,如果两种情况下的cell均进行预渲染,相对于现有技术,相当于上下两个方向的cell需要进行cell的复用以及预渲染,在当前展示页面展示的cell处于上述相对静止状态时存在额外的计算开销,内存开销基本两倍于现有技术。
可选的,上述步骤S103中基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理,包括:
基于至少一个元数据,分别配置至少一个cell内存对象的属性信息,并基于属性信息进行cell预渲染处理,其中,属性信息包括cell的展示区域的展示位置以及大小、cell中待展示的各元素、各元素的展示位置以及大小中至少一项。
在本实施例中,可以依次从复用队列中获取至少一个待预渲染的cell分别进行cell预渲染处理,将中央处理器(Central Processing Unit,CPU)中的数据渲染到图像处理器(Graphic Processing Unit,GPU)上,从而得到可以直接向用户展示的预渲染后的cell内存对象。
cell内存对象的预渲染处理过程包括配置过程以及渲染过程,具体的,配置过程为:可以基于元数据对cell内存对象的内容属性进行配置,例如可以设置标题、头像以及播放地址;可以进行数据格式的转化,将文字和/或图片等的初始数据格式转化为可以直接向用户展示的文字和/或图片的数据格式,将视频的首帧的数据转化为可以直接向用户展示的图像帧,渲染过程为:确定cell中各元素在cell中的展示位置以及大小,确定各元素对应的展示内容;可选的,渲染过程还可能包括:将各元素的展示内容进行组合渲染得到最终的位图或纹理数据、将组合渲染得到的数据发送给GPU以便于在显示器上显示,一种更加可能的情况是,数据发送给GPU进行显示的过程可以在展示cell内存对象时同步进行。
在上述实施例中,如上述将cell内存对象加入预渲染队列后,用户滑动可以展示cell内存对象,用户滑动的方向可能与cell预渲染的方向一致,也可能存在不一致的情况,下面,对用户滑动的几种情况进行说明:
可选的,将预渲染后的cell内存对象存储至预渲染队列之后,该方法还包括:
检测到用户针对当前展示页面的第一滑动操作时,基于预渲染队列获取与第一滑动操作对应的预渲染后的第一cell内存对象;
在滑动后的展示页面中展示第一cell内存对象。
可选的,基于预渲染队列获取与第一滑动操作对应的预渲染后的第一cell内存对象,包括:
若在预渲染队列中检测到与第一滑动操作对应的至少一个第一cell内存对象,则从预渲染队列中获取至少一个第一cell内存对象;
若在预渲染队列中没有检测到与第一滑动操作对应的至少一个第一cell内存对象,则获取待预渲染的至少一个cell内存对象,获取至少一个第一cell内存对象分别对应的元数据,并基于待预渲染的至少一个cell内存对象以及第一cell的元数据进行cell预渲染处理得到预渲染后的第一cell内存对象。
一、用户滑动方向与cell预渲染方向一致。
本公开实施例中,第一滑动操作的滑动距离超过了cell切换的临界滑动距离,可以触发终端设备进行cell内存对象的切换,一种可能的情况是用户针对当前展示页面的第一滑动操作为向下滑动,预渲染cell的情况为情况a或情况c,另一种可能的情况是用户针对当前展示页面的第一滑动操作为向上滑动,预渲染cell的情况为情况b或情况c,满足上述任一种可能的情况时,终端设备可以从预渲染队列中获取到与第一滑动操作对应的第一cell内存对象,从而可以在滑动后的展示页面上展示第一cell内存对象,相当于在展示第一cell内存对象之前已经完成了cell预渲染的过程,直接展现cell内存对象无需重新渲染。
下面,结合具体的应用场景对本实施例进行解释说明。
参照图2,一种可能的场景是:当前展示页面展示有第N个cell内存对象以及第N+1个cell内存对象的部分内容(第N个cell内存对象以及第N+1个cell内存对象也是从预渲染队列中提取的),复用队列中有k个cell内存对象,在cell预渲染阶段依次从复用队列中提取2个cell内存对象,基于第1个cell内存对象对第N+2个cell的元数据进行预渲染得到第N+2个cell内存对象,基于第2个cell内存对象对第N+3个cell的元数据进行预渲染得到第N+3个cell内存对象,将第N+2个cell内存对象以及第N+3个cell内存对象存储于预渲染队列,用户在触摸屏上向上滑动(或用户利用鼠标工具向下滑动),可以从预渲染队列中获取第N+2个cell内存对象以及第N+3个cell内存对象,在下一展示页面中展示第N+2个cell内存对象以及第N+3个cell内存对象的部分内容,N和k为大于0的整数,。
参照图3,另一种可能的场景是:当前展示页面展示有第N个cell内存对象以及第N+1个cell内存对象的部分内容(第N个cell内存对象以及第N+1个cell内存对象也是从预渲染队列中提取的),复用队列中有k个cell内存对象,在cell预渲染阶段从复用队列中提取2个cell内存对象,基于第1个cell内存对象对第N-2个cell的元数据进行预渲染得到第N-2个cell内存对象,基于第2个cell内存对象对第N-1个cell的元数据进行预渲染得到第N-1个cell内存对象,将第N-2个cell内存对象以及第N-1个cell内存对象存储于预渲染队列,用户在触摸屏上向下滑动(或用户利用鼠标工具向上滑动),可以从预渲染队列中获取第N-2个cell内存对象以及第N-1个cell内存对象,在上一展示页面中展示第N-2个cell内存对象以及第N-1个cell内存对象的部分内容,N和k为大于0的整数,。
参照图4,另一种可能的场景是:当前展示页面展示有第N个cell内存对象以及第N+1个cell内存对象的部分内容(第N个cell内存对象以及第N+1个cell内存对象也是从预渲染队列中提取的),复用队列中有k个cell内存对象,在cell预渲染阶段从复用队列中提取4个cell内存对象,基于第1个cell内存对象对第N-2个cell的元数据进行预渲染得到第N-2个cell内存对象,基于第2个cell内存对象对第N-1个cell的元数据进行预渲染得到第N-1个cell内存对象,基于第3个cell内存对象对第N+2个cell的元数据进行预渲染得到第N+2个cell内存对象,基于第4个cell内存对象对第N+3个cell的元数据进行预渲染得到第N+3个cell内存对象,将第N-2个cell内存对象、第N-1个cell内存对象、第N+2个cell内存对象以及第N+3个cell内存对象存储于预渲染队列中对应的位置,若用户在触摸屏上向上滑动(或用户利用鼠标工具向下滑动),可以从预渲染队列中获取第N+2个cell内存对象以及第N+3个cell内存对象,在下一展示页面中展示第N+2个cell内存对象以及第N+3个cell内存对象的部分内容,若用户向下滑动(或用户利用鼠标工具向上滑动),可以从预渲染队列中获取第N-2个cell内存对象以及第N-1个cell内存对象,在上一展示页面中展示第N-2个cell内存对象以及第N-1个cell内存对象的部分内容,N和k为大于0的整数。
对于常见应用场景,用户向上滑动的情况远多于向下滑动,故预渲染下一屏的cell的效果较佳。
对于分页的应用场景,如上述用户每次滑动一般可以滑动一屏的距离,用户每次滑动只能展示当前展示页面下一展示页面(或上一展示页面)的内容,而无法直接展示下一展示页面后面的展示页面(或上一展示页面前面的展示页面)的内容,本公开的优势能更加明显。
二、用户滑动方向与cell预渲染方向不一致。
一种可能的情况是用户针对当前展示页面的第一滑动操作为向下滑动,预渲染的情况为情况b,另一种可能的情况是用户针对当前展示页面的第一滑动操作为向上滑动,预渲染cell的情况为情况a。满足上述任一种可能的情况时,终端设备无法从预渲染队列中检测到与第一滑动操作对应的第一cell内存对象,则终端设备首先判断复用队列中是否存在可以复用的至少一个cell内存对象,若存在,则从复用队列中获取至少一个cell内存对象,若复用队列中不存在可以复用的至少一个cell内存对象,则从预渲染队列中获取至少一个cell内存对象(显然这时获取的cell内存对象与第一滑动操作的滑动方向不一致,即为第一滑动操作的非对应方向的cell),从预渲染队列中获取cell内存对象丢弃了该cell内存对象对应的元数据的或者说解除了该cell内存对象与对应的元数据的绑定关系,若预渲染队列中不存在至少一个cell内存对象,则创建至少一个cell内存对象,获取至少一个第一cell内存对象分别对应的元数据,基于复用队列中获取的(或预渲染队列中获取的或创建的)至少一个cell内存对象,依据第一cell的元数据进行cell预渲染处理从而得到至少一个第一cell内存对象,从而可以在滑动后的展示页面上展示至少一个第一cell内存对象,预渲染cell的原理参考上述实施例的相关描述,此处不再赘述。
终端设备展示至少一个第一cell内存对象之后,本公开设置了cell的回退机制,可以将cell回退到预渲染队列或复用队列,具体如下:
可选的,在滑动后的展示页面中展示第一cell内存对象之后,检测到用户针对滑动后的展示页面的、滑动距离超过cell切换的临界滑动距离的滑动操作时,方法还包括:
将至少一个第一cell内存对象存储至预渲染队列;
其中,将至少一个第一cell内存对象存储至预渲染队列,包括:
若第一cell内存对象的数量超过预渲染队列的可增加cell数量阈值时,将距离展示页面顶部最远的第一cell内存对象存储至复用队列;
在本实施例中,检测到用户针对滑动后的展示页面的滑动操作,且该滑动操作的滑动距离超过cell切换的临界滑动距离时,表示用户可能想要浏览第一cell内存对象之后的cell内存对象,则终端设备将第一cell内存对象回退到预渲染队列(此时,展示页面展示的cell内存对象的元数据不会发生变化,因此从展示页面进入回退机制的第一cell的元数据未发生变化),此时,该滑动操作导致展示页面展示的第一cell内存对象从展示页面消失。如果用户后续反向滑动浏览第一cell内存对象时,不需要再重新预渲染第一cell内存对象也可以直接获取预渲染队列中的第一cell内存对象并展示第一cell内存对象,相当于将cell内存对象也进行了复用。
例如参照图2,用户针对下一展示页面执行滑动操作,终端设备可以将第N+2个cell内存对象以及第N+3个cell内存对象回退到预渲染队列,后续用户反向滑动浏览第N+2个cell内存对象和/或第N+3个cell内存对象,终端设备可以直接从预渲染队列中获取第N+2个cell内存对象和/或第N+3个cell内存对象进行展示,而不需要重新预渲染第N+2个cell和/或第N+3个cell,避免了展示cell内存对象时同步进行cell渲染所带来时间延迟,同时相比现有技术不需要重新渲染cell,在当前展示页面展示的cell处于相对静止状态时基本无额外的计算开销,内存开销基本等同现有技术。
对于回退到预渲染队列中的cell内存对象,可以将该cell内存对象设置为未展示状态,例如对于视频,可以将视频的播放进度设置为0。
进一步的,在本实施例中,终端设备对预渲染队列的大小设定了一个上限,当回退到预渲染队列中的至少一个第一cell内存对象的数量超过预渲染队列可以增加的cell数量阈值时,则将距离展示页面顶部最远的第一cell内存对象对应的cell内存对象存储至复用队列,如上述终端设备的展示页面上可以展示至少一个第一cell内存对象,距离展示页面顶部最远的第一cell内存对象即为最后展示在终端设备展示页面上的cell内存对象,例如对于图2,下一展示页面中距离展示页面顶部最远的第一cell内存对象为第N+3个cell内存对象,图3中为第N-2个cell内存对象。
可选的,方法还包括:若检测到预渲染队列的cell内存对象的元数据发生更新,将发生元数据更新的cell内存对象存储至复用队列。
终端设备可以实时或周期性或不定期判断预渲染队列中的cell内存对象的元数据是否发生变化,若元数据发生变化,则取消cell内存对象与变化前的元数据的绑定关系,并将cell内存对象回退至复用队列。
综上,本公开的方案具有如下特点:
1、在List单向滑动时,由于已有预渲染的cell内存对象(假设元数据未改变),可直接展现预渲染的cell内存对象无需重新渲染;
2、在List停止滑动,或滑动距离没有超过cell切换的临界滑动距离时,认为用户正在消费当前展示页面展示的cell内存对象,此时静默预渲染临近的cell,后续滑动时,可直接展现预渲染的cell内存对象而无需重新渲染;
3、在List向某一方向连续滑动的情况下,预渲染无法生效,但性能开销无劣化,基本等同现有技术;
4、预渲染任一方向的cell,在用户滑动方向一致时可直接展现预渲染的cell内存对象无需重新渲染cell,内存开销基本等同于现有技术,对当前展示页面展示的cell之前和之后的cell均进行预渲染,可以适应多种用户滑动的场景,可直接展现预渲染的cell内存对象无需重新渲染cell;
5、在滑动展示cell之前,优先完成了cell的预渲染,避免了滑动展示cell与渲染cell同步进行,避免了系统的卡顿,提升了平均帧率。
图5为本公开一种cell预渲染的装置的结构示意图,该装置包括:
第一获取模块501,用于当检测到预渲染单元格cell的触发条件时,获取待预渲染的至少一个cell内存对象;
第二获取模块502,用于获取与当前展示页面展示的cell相连续的至少一个cell的元数据;
处理模块503,用于基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理;
第一存储模块504,用于将预渲染后的cell内存对象存储至预渲染队列。
可选的,触发条件包括以下至少一项:
当前展示页面展示的cell的展示时长大于预置展示时长;
检测到用户针对当前展示页面的滑动操作的滑动距离不超过cell切换的临界滑动距离。
可选的,第一获取模块501,具体用于:
从复用队列中获取至少一个cell内存对象;
若复用队列中不存在内存对象,则创建至少一个cell内存对象。
可选的,元数据包括以下至少一项:
预定展示位置在当前展示页面展示的cell之前,且与当前展示页面展示的cell相连续的至少一个cell的元数据;
预定展示位置在当前展示页面展示的cell之后,且与当前展示页面展示的cell相连续的至少一个cell的元数据。
可选的,处理模块503,具体用于:
基于至少一个元数据,分别配置至少一个cell内存对象的属性信息,并基于属性信息进行cell预渲染处理,其中,属性信息包括cell的展示区域的展示位置以及大小、cell中待展示的各元素、各元素的展示位置以及大小中至少一项。
可选的,该装置还包括第三获取模块与展示模块,在第一存储模块504将预渲染后的cell内存对象存储至预渲染队列之后,第三获取模块,用于检测到用户针对当前展示页面的第一滑动操作时,基于预渲染队列获取与第一滑动操作对应的预渲染后的第一cell内存对象;
展示模块,用于在滑动后的展示页面中展示第一cell内存对象。
可选的,第三获取模块,具体用于:
若在预渲染队列中检测到与第一滑动操作对应的至少一个第一cell内存对象,则从预渲染队列中获取至少一个第一cell内存对象;
若在预渲染队列中没有检测到与第一滑动操作对应的至少一个第一cell内存对象,则获取待预渲染的至少一个cell内存对象,获取至少一个第一cell内存对象分别对应的元数据,并基于待预渲染的至少一个cell内存对象以及第一cell的元数据进行cell预渲染处理得到预渲染后的第一cell内存对象。
可选的,该装置还包括第二存储模块,展示模块在滑动后的展示页面中展示第一cell内存对象之后,检测到用户针对滑动后的展示页面的、滑动距离超过cell切换的临界滑动距离的滑动操作时;
第二存储模块用于将第一cell内存对象存储至复用队列;
其中,第二存储模块,具体用于:
若第一cell内存对象的数量超过预渲染队列的可增加cell数量阈值时,将距离展示页面顶部最远的第一cell内存对象对应的cell内存对象存储至复用队列。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备(例如1中的终端设备)600的结构示意图。本公开实施例中的终端设备可以应用于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
电子设备包括:存储器以及处理器,其中,这里的处理器可以称为下文的处理装置601,存储器可以包括下文中的只读存储器(ROM)602、随机访问存储器(RAM)603以及存储装置608中的至少一项,具体如下所示:
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,adhoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:当检测到预渲染单元格cell的触发条件时,获取待预渲染的至少一个cell内存对象;获取与当前展示页面展示的cell相连续的至少一个cell的元数据;基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理;将预渲染后的cell内存对象存储至预渲染队列。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取模块还可以被描述为“当检测到预渲染单元格cell的触发条件时,获取待预渲染的至少一个cell内存对象的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,提供了一种cell预渲染的方法,其特征在于,包括:
当检测到预渲染单元格cell的触发条件时,获取待预渲染的至少一个cell内存对象;
获取与当前展示页面展示的cell相连续的至少一个cell的元数据;
基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理;
将预渲染后的cell内存对象存储至预渲染队列。
可选的,触发条件包括以下至少一项:
当前展示页面展示的cell的展示时长大于预置展示时长;
检测到用户针对当前展示页面的滑动操作的滑动距离不超过cell切换的临界滑动距离。
可选的,获取待预渲染的至少一个cell内存对象,包括:
从复用队列中获取至少一个cell内存对象;
若复用队列中不存在内存对象,则创建至少一个cell内存对象。
可选的,元数据包括以下至少一项:
预定展示位置在当前展示页面展示的cell之前,且与当前展示页面展示的cell相连续的至少一个cell的元数据;
预定展示位置在当前展示页面展示的cell之后,且与当前展示页面展示的cell相连续的至少一个cell的元数据。
可选的,基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理,包括:
基于至少一个元数据,分别配置至少一个cell内存对象的属性信息,并基于属性信息进行cell预渲染处理,其中,属性信息包括cell的展示区域的展示位置以及大小、cell中待展示的各元素、各元素的展示位置以及大小中至少一项。
可选的,将预渲染后的cell内存对象存储至预渲染队列之后,方法还包括:
检测到用户针对当前展示页面的第一滑动操作时,基于预渲染队列获取与第一滑动操作对应的预渲染后的第一cell内存对象;
在滑动后的展示页面中展示第一cell内存对象。
可选的,基于预渲染队列获取与第一滑动操作对应的预渲染后的第一cell内存对象,包括:
若在预渲染队列中检测到与第一滑动操作对应的至少一个第一cell内存对象,则从预渲染队列中获取至少一个第一cell内存对象;
若在预渲染队列中没有检测到与第一滑动操作对应的至少一个第一cell内存对象,则获取待预渲染的至少一个cell内存对象,获取至少一个第一cell内存对象分别对应的元数据,并基于待预渲染的至少一个cell内存对象以及第一cell的元数据进行cell预渲染处理得到预渲染后的第一cell内存对象。
可选的,在滑动后的展示页面中展示第一cell内存对象之后,检测到用户针对滑动后的展示页面的、滑动距离超过cell切换的临界滑动距离的滑动操作时,方法还包括:
将至少一个第一cell内存对象存储至预渲染队列;
其中,将至少一个第一cell内存对象存储至预渲染队列,包括:
若第一cell内存对象的数量超过预渲染队列的可增加cell数量阈值时,将距离展示页面顶部最远的第一cell内存对象存储至复用队列。
根据本公开的一个或多个实施例,还提供了一种cell预渲染的装置的结构示意图,该装置包括:
第一获取模块,用于当检测到预渲染单元格cell的触发条件时,获取待预渲染的至少一个cell内存对象;
第二获取模块,用于获取与当前展示页面展示的cell相连续的至少一个cell的元数据;
处理模块,用于基于待预渲染的至少一个cell内存对象,依据至少一个cell的元数据进行cell预渲染处理;
第一存储模块,用于将预渲染后的cell内存对象存储至预渲染队列。
可选的,触发条件包括以下至少一项:
当前展示页面展示的cell的展示时长大于预置展示时长;
检测到用户针对当前展示页面的滑动操作的滑动距离不超过cell切换的临界滑动距离。
可选的,第一获取模块,具体用于:
从复用队列中获取至少一个cell内存对象;
若复用队列中不存在内存对象,则创建至少一个cell内存对象。
可选的,元数据包括以下至少一项:
预定展示位置在当前展示页面展示的cell之前,且与当前展示页面展示的cell相连续的至少一个cell的元数据;
预定展示位置在当前展示页面展示的cell之后,且与当前展示页面展示的cell相连续的至少一个cell的元数据。
可选的,处理模块,具体用于:
基于至少一个元数据,分别配置至少一个cell内存对象的属性信息,并基于属性信息进行cell预渲染处理,其中,属性信息包括cell的展示区域的展示位置以及大小、cell中待展示的各元素、各元素的展示位置以及大小中至少一项。
可选的,该装置还包括第三获取模块与展示模块,在第一存储模块将预渲染后的cell内存对象存储至预渲染队列之后,第三获取模块,用于检测到用户针对当前展示页面的第一滑动操作时,基于预渲染队列获取与第一滑动操作对应的预渲染后的第一cell内存对象;
展示模块,用于在滑动后的展示页面中展示第一cell内存对象。
可选的,第三获取模块,具体用于:
若在预渲染队列中检测到与第一滑动操作对应的至少一个第一cell内存对象,则从预渲染队列中获取至少一个第一cell内存对象;
若在预渲染队列中没有检测到与第一滑动操作对应的至少一个第一cell内存对象,则获取待预渲染的至少一个cell内存对象,获取至少一个第一cell内存对象分别对应的元数据,并基于待预渲染的至少一个cell内存对象以及第一cell的元数据进行cell预渲染处理得到预渲染后的第一cell内存对象。
可选的,该装置还包括第二存储模块,展示模块在滑动后的展示页面中展示第一cell内存对象之后,检测到用户针对滑动后的展示页面的、滑动距离超过cell切换的临界滑动距离的滑动操作时;
第二存储模块用于将至少一个第一cell内存对象存储至预渲染队列;
其中,第二存储模块,具体用于:
若第一cell内存对象的数量超过预渲染队列的可增加cell数量阈值时,将距离展示页面顶部最远的第一cell内存对象存储至复用队列。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。