确定视图构建时间的方法、装置、存储介质及电子设备
技术领域
本公开涉及互联网领域,特别涉及一种确定视图构建时间的方法、装置、存储介质及电子设备。
背景技术
Android系统进入页面后,系统要解析布局文件,根据布局文件内容创建视图树,上述所需时间即为页面的View(视图)构建时间。
View构建时间对页面加载速度至关重要,然而,目前无法监测到Android页面的View构建时间。
发明内容
有鉴于此,本公开实施例提出了一种确定视图构建时间的方法、装置、存储介质及电子设备,用以解决现有技术的如下问题:View构建时间对页面加载速度至关重要,然而,目前无法监测到Android页面的View构建时间。
一方面,本公开实施例提出了一种确定视图构建时间的方法,包括:在页面初始化时,获取所述页面的系统布局解析器对象;根据所述系统布局解析器对象对应的代码和预设时间测算代码构建新的布局解析器对象;通过反射机制执行所述新的布局解析器对象解析所述页面的布局文件,以确定所述页面的视图构建时间。
在一些实施例中,获取页面的系统布局解析器对象,包括:获取所述页面对应的窗口对象;通过所述反射机制从所述窗口对象中获取所述系统布局解析器对象。
在一些实施例中,通过反射机制执行所述新的布局解析器对象解析所述页面的布局文件,包括:通过反射机制将系统中布局解析器的调用地址由所述系统布局解析器对象的地址修改为所述新的布局解析器对象的地址;调用所述新的布局解析器对象解析所述页面的布局文件。
在一些实施例中,所述反射机制为Java反射机制。
另一方面,本公开实施例提出了一种确定视图构建时间的装置,包括:获取模块,用于在页面初始化时,获取所述页面的系统布局解析器对象;构建模块,用于根据所述系统布局解析器对象对应的代码和预设时间测算代码构建新的布局解析器对象;解析模块,用于通过反射机制执行所述新的布局解析器对象解析所述页面的布局文件,以确定所述页面的视图构建时间。
在一些实施例中,所述获取模块,具体用于:获取所述页面对应的窗口对象;通过所述反射机制从所述窗口对象中获取所述系统布局解析器对象。
在一些实施例中,所述解析模块,具体用于:通过反射机制将系统中布局解析器的调用地址由所述系统布局解析器对象的地址修改为所述新的布局解析器对象的地址;调用所述新的布局解析器对象解析所述页面的布局文件。
在一些实施例中,所述反射机制为Java反射机制。
另一方面,本公开实施例提出了一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现本公开任意实施例提供的方法。
另一方面,本公开实施例提出了一种电子设备,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现本公开任意实施例提供的方法。
本公开实施例自定义了一个新的布局解析器对象,通过新的布局解析器对象确定页面的视图构建时间,实现了对页面的视图构建时间的监测,进而可以确定页面加载速度,提升了系统性能。
附图说明
图1为本公开第一实施例提供的确定视图构建时间的方法的流程图;
图2为本公开第二实施例提供的确定视图构建时间的装置的结构示意图;
图3为本公开第四实施例提供的电子设备的结构示意图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。
本公开第一实施例提供了一种确定视图构建时间的方法,该方法的流程如图1所示,包括步骤S101至S103:
S101,在页面初始化时,获取页面的系统布局解析器对象。
具体实现过程中,获取页面对应的窗口对象,并通过反射机制从窗口对象中获取系统布局解析器对象。
S102,根据系统布局解析器对象对应的代码和预设时间测算代码构建新的布局解析器对象。
在每个页面启动时,系统会先创建窗口,随后系统会创建系统布局解析器对象;此时,该节点也会触发根据预设时间测算代码和系统布局解析器对象的代码构建新的布局解析器对象。本实施例为了让布局解析器对象能够实现确定视图构建时间的功能,所以在新的布局解析器对象的代码中增加了预设时间测算代码;同时,为了让新的布局解析器对象能够实现原有的系统布局解析器对象的功能,还将系统布局解析器对象的代码也写入到新的布局解析器对象中。
至此,新的布局解析器对象构建完成,其具有系统布局解析器对象能够实现的功能,也能够对视图构建时间进行监测。
S103,通过反射机制执行新的布局解析器对象解析页面的布局文件,以确定页面的视图构建时间。
在执行时,本发明实施例通过反射机制来将调用地址中本来的系统布局解析器对象的地址修改为新的布局解析器对象的地址,进而系统在调用布局解析器对象时,调用新的布局解析器对象解析配置文件(即布局文件),并将解析后的数据渲染到屏幕上。
在安卓系统中,原生语言通常是Java语言,因此,上述的反射机制即为Java反射机制。
本公开实施例通过系统布局解析器对象对应的代码和预设时间测算代码构建了一个新的布局解析器对象,并使用该新的布局解析器对象解析页面的布局文件,以确定页面的视图构建时间。
本公开实施例自定义了一个新的布局解析器对象,通过新的布局解析器对象确定页面的视图构建时间,实现了对页面的视图构建时间的监测,进而可以确定页面加载速度,提升了系统性能。
本公开第二实施例提供了一种确定视图构建时间的装置,该装置的结构示意如图2所示,包括:
获取模块10,用于在页面初始化时,获取页面的系统布局解析器对象;构建模块20,与获取模块10耦合,用于根据系统布局解析器对象对应的代码和预设时间测算代码构建新的布局解析器对象;解析模块30,与构建模块20耦合,用于通过反射机制执行新的布局解析器对象解析页面的布局文件,以确定页面的视图构建时间。
其中,获取模块具体用于:获取页面对应的窗口对象;通过反射机制从窗口对象中获取系统布局解析器对象。
在页面初始化时,系统会先创建窗口,随后系统会创建系统布局解析器对象;此时,该节点也会触发根据预设时间测算代码和系统布局解析器对象的代码构建新的布局解析器对象。本实施例为了让布局解析器对象能够实现确定视图构建时间的功能,所以在新的布局解析器对象的代码中增加了预设时间测算代码;同时,为了让新的布局解析器对象能够实现原有的系统布局解析器对象的功能,还将系统布局解析器对象的代码也写入到新的布局解析器对象中。新的布局解析器对象具有系统布局解析器对象能够实现的功能,也能够对视图构建时间进行监测。
为了简化实现过程,上述解析模块,具体用于通过反射机制将系统中布局解析器的调用地址由系统布局解析器对象的地址修改为新的布局解析器对象的地址;调用新的布局解析器对象解析页面的布局文件。
在安卓系统中,原生语言通常是Java语言,因此,上述反射机制可以为Java反射机制。
本公开实施例自定义了一个新的布局解析器对象,通过新的布局解析器对象确定页面的视图构建时间,实现了对页面的视图构建时间的监测,进而可以确定页面加载速度,提升了系统性能。
本公开第三实施例提供了一种存储介质,存储有计算机程序,该计算机程序被处理器执行时实现本公开任意实施例提供的方法,如下步骤S1至S3:
S1,在页面初始化时,获取页面的系统布局解析器对象。
S2,根据系统布局解析器对象对应的代码和预设时间测算代码构建新的布局解析器对象。
本实施例为了让布局解析器对象能够实现确定视图构建时间的功能,所以在新的布局解析器对象的代码中增加了预设时间测算代码;同时,为了让新的布局解析器对象能够实现原有的系统布局解析器对象的功能,还将系统布局解析器对象的代码也写入到新的布局解析器对象中。
至此,新的布局解析器对象构建完成,其具有系统布局解析器对象能够实现的功能,也能够对视图构建时间进行监测。
S3,通过反射机制执行新的布局解析器对象解析页面的布局文件,以确定页面的视图构建时间。
其中,上述反射机制为Java反射机制。
计算机程序被处理器执行获取页面的系统布局解析器对象的步骤时,具体被处理器执行如下步骤:获取页面对应的窗口对象;通过反射机制从窗口对象中获取系统布局解析器对象。
计算机程序被处理器执行通过反射机制执行新的布局解析器对象解析页面的布局文件的步骤时,被处理器执行如下步骤:通过反射机制将系统中布局解析器的调用地址由系统布局解析器对象的地址修改为新的布局解析器对象的地址;调用新的布局解析器对象解析页面的布局文件。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本公开的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
本公开第四实施例提供了一种电子设备,如图3所示,该电子设备至少包括存储器901和处理器902,存储器901上存储有计算机程序,处理器902在执行存储器901上的计算机程序时实现本公开任意实施例提供的方法,示例性的,计算机程序步骤如下S11至S13:
S11,在页面初始化时,获取页面的系统布局解析器对象。
S12,根据系统布局解析器对象对应的代码和预设时间测算代码构建新的布局解析器对象。
本实施例为了让布局解析器对象能够实现确定视图构建时间的功能,所以在新的布局解析器对象的代码中增加了预设时间测算代码;同时,为了让新的布局解析器对象能够实现原有的系统布局解析器对象的功能,还将系统布局解析器对象的代码也写入到新的布局解析器对象中。
至此,新的布局解析器对象构建完成,其具有系统布局解析器对象能够实现的功能,也能够对视图构建时间进行监测。
S13,通过反射机制执行新的布局解析器对象解析页面的布局文件,以确定页面的视图构建时间。
其中,上述反射机制为Java反射机制。
处理器902在执行存储器901上存储的获取页面的系统布局解析器对象,的计算算计程序时,具体执行如下计算机程序:获取页面对应的窗口对象;通过反射机制从窗口对象中获取系统布局解析器对象。
处理器902在执行存储器901上存储的通过反射机制执行新的布局解析器对象解析页面的布局文件的计算算计程序时,具体执行如下计算机程序:通过反射机制将系统中布局解析器的调用地址由系统布局解析器对象的地址修改为新的布局解析器对象的地址;调用新的布局解析器对象解析页面的布局文件。
此外,尽管已经在本文中描述了示例性实施例,其范围包括任何和所有基于本公开的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,真正的范围和精神由以下权利要求以及其等同物的全部范围所指示。
以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本公开。这不应解释为一种不要求保护的公开的特征对于任一权利要求是必要的意图。相反,本公开的主题可以少于特定的公开的实施例的全部特征。从而,以下权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本公开的范围应参照所附权利要求以及这些权利要求赋权的等同形式的全部范围来确定。
以上对本公开多个实施例进行了详细说明,但本公开不限于这些具体的实施例,本领域技术人员在本公开构思的基础上,能够做出多种变型和修改实施例,这些变型和修改都应落入本公开所要求保护的范围之内。