CN111782212A - 一种视图组件的创建方法、装置及存储介质 - Google Patents
一种视图组件的创建方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111782212A CN111782212A CN202010613257.XA CN202010613257A CN111782212A CN 111782212 A CN111782212 A CN 111782212A CN 202010613257 A CN202010613257 A CN 202010613257A CN 111782212 A CN111782212 A CN 111782212A
- Authority
- CN
- China
- Prior art keywords
- target
- creating
- instance
- class name
- view component
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000009877 rendering Methods 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000005856 abnormality Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种视图组件的创建方法、装置及存储介质,本申请实施例通过当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式;使用目标实例创建方式,创建目标类名对应的实例。以此,通过确定目标可扩展标记语言布局文件中用于界面布局的目标视图组件的目标类名,以预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,使用目标实例创建方式,创建目标类名对应的实例,不需要走后续的反射处理,节省了视图组件的创建的时间,极大的提升了视图组件的创建的效率。
Description
技术领域
本申请涉及信息技术领域,具体涉及一种视图组件的创建方法、装置及存储介质。
背景技术
随着信息技术的不断发展,用户可以使用应用程序浏览大量的数据,如文字数据、图像数据、音频数据以及卡片信息等等,可扩展标记语言(Extensible Markup Language,XML)为各种应用程序之间进行数据传输的最常用工具,提供了一种描述结构数据的格式,简化了网络中数据交换和表示。
相关技术中,应用程序在首次渲染生成视图组件(view)时,首先需要解析XML布局文件,以获得每一视图组件的类名,然后通过视图组件的类名进行反射,创建出相应的实例返回,由于反射创建的过程比较损耗设备的资源,使得视图组件的创建的效率较差。
发明内容
本申请实施例提供一种视图组件的创建方法、装置及存储介质,可以提升视图组件的创建的效率。
为解决上述技术问题,本申请实施例提供以下技术方案:
一种视图组件的创建方法,应用于安卓客户端,所述创建方法包括:
当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;
解析所述目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;
在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式,其中所述实例创建方式非通过反射过程创建实例的方式;
使用所述目标实例创建方式,创建所述目标类名对应的实例,所述实例用于表示所述目标视图组件。
相应的,本申请实施例还提供一种视图组件的创建装置,包括:
获取单元当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;
解析单元,用于解析所述目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;
确定单元,在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式,其中所述实例创建方式非通过反射过程创建实例的方式;
创建单元,用于使用所述目标实例创建方式,创建所述目标类名对应的实例,所述实例用于表示所述目标视图组件。
相应的,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的视图组件的创建方法。
本申请实施例通过当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式;使用目标实例创建方式,创建目标类名对应的实例。以此,通过确定目标可扩展标记语言布局文件中用于界面布局的目标视图组件的目标类名,以预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,使用目标实例创建方式,创建目标类名对应的实例,不需要走后续的反射处理,节省了视图组件的创建的时间,极大的提升了视图组件的创建的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的视图组件的创建方法的流程示意图;
图2是本申请实施例提供的视图组件的创建方法的场景示意图;
图3是本申请实施例提供的视图组件的创建方法的另一流程示意图;
图4是本申请实施例提供的视图组件的创建方法的另一场景示意图;
图5是本申请实施例提供的视图组件的创建装置的结构示意图;
图6是本申请实施例提供的视图组件的创建装置的另一结构示意图;
图7是本申请实施例提供的终端的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
实施例一、
在本实施例中,将从视图组件的创建装置的角度进行描述,该视图组件的创建装置具体可以集成在具备储存单元并安装有微处理器而具有运算能力的网络设备中,该网络设备可以为终端或者服务器,以下将以终端为例进行说明。
请参阅图1,图1是本申请实施例提供的视图组件的创建方法的流程示意图。该视图组件的创建方法包括:
在步骤101中,当接收到界面渲染指令时,获取目标可扩展标记语言布局文件。
其中,该可扩展标记语言布局文件为操作系统中一种能实现视图组件的用户界面(User Interface,UI)元素创建的文件方案,通过可扩展标记语言编写实现,以此,本申请实施例在接收到界面渲染指令时,例如生成应用的购物界面等等,获取XML布局文件,该XML布局文件中设计用户界面可以更好地将应用的外观与控制应用行为的代码隔离,使得每次修改或调整界面布局只需要修改XML布局文件的代码而不是修改源码和重新编译。
在步骤102中,解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名。
其中,可以通过自动化脚本对某应用中全部的XML布局文件进行扫描,得到该应用中所有的视图组件相应的目标类名,该视图组件为组成应用的用户界面中的显示组件,例如文本视图组件(TextView)、图像视图组件(ImageView)等等。
在步骤103中,在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式。
需要说明的是,为了更好的说明本申请实施例,请一并结合图2进行参考,在创建视图组件(CreatView),即操作系统要创建页面上的视图组件时,需要读取和解析XML布局文件,拿到视图组件的类名,将视图组件的类名回调给factory2接口,当操作系统中设置了factory2接口,且通过该factory2接口可以正常新建实例和返回实例,那么操作系统可以直接使用。但是当没有设置factory2接口时,操作系统会继续找到sConstruterMap的哈希表,查找是否有视图组件的类名所对应的构造器,如果有构造器,会使用该构造器创建实例,并且返回实例。但是当没有找到构造器操作系统最后会通过类加载器(classloader)进行反射,根据视图组件创建实例和返回实例。首次创建视图组件时,没有相应的缓存数据,所以肯定会通过类加载器进行反射,由于反射创建的过程对操作系统的资源浪费很大,导致反射创建的时间非常长,从而造成视图组件的创建的效率较差,本申请实施例方法可以解决上述问题,具体参照以下步骤:
其中,之所以通过类加载器对视图组件进行反射,是因为操作系统中没有该视图组件相应的缓存,即没有目标类名相应的实例创建方式,因此,可以对视图组件的目标类名进行预先实例创建方式的定义,使得后期可以直接使用该预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,无需通过类加载器进行反射,避免了反射创建的步骤。
在一些实施方式中,该在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式的步骤,可以包括:
(1)在预先缓存的构造器中,确定该目标类名对应的目标构造器
其中,可以创建一个预设XML文件,该预设XML文件为新的XML文件,将前面得到视图组件和生成视图组件的属性数据写入到该预设XML文件中,在一实施方式中,该属性数据可以为生成该视图组件的必备属性代码,如该视图组件的宽高数据,为了方便后续的预加载,提升加载速度,该属性数据可以只为生成该视图组件的宽高数据。
进一步的,可以通过预设工具类,例如AsyncLayoutInflater工具,该AsyncLayoutInflater工具为谷歌官方提供的工具类,用于异步创建视图组件,对该预设XML文件中的视图组件和属性数据进行异步创建,但是不进行渲染上屏,因而不会造成操作系统资源的负担,且由于只是对必备属性数据进行创建,可以更好节省操作系统的资源,且同时实现对视图组件进行预加载,使得将视图组件的目标类名直接进行缓存,后续可以在预先缓存的构造器中,直接确定出目标类名对应的目标构造器,就不需要走反射流程生成视图组件的目标类名。
例如,可以通过以下方式创建预设XML文件:
<Framelayout xmlns=“http://schemas.android.com/apk/res/android”android:layout_width=ldp“android:layout_height=“ldp”>
将前面得到的视图组件“TextView”写入该预设XML文件,并进行异步非渲染创建,实现对该视图组件进行预加载。
<Framelayout xmlns=“http://schemas.android.com/apk/res/android”android:layout_width=ldp“android:layout_height=“ldp”>
<TextView
Android:layout_width=“ldp”android:layout_height=“ldp”/>
在一些实施方式中,该对视图组件进行预加载,得到预加载后的视图组件的步骤,可以包括:
(1.1)继承工厂方法的接口,得到预设工厂类;
(1.2)使用自动化脚本扫描一个或多个可扩展标记语言布局文件,以收集视图组件的类名;
(1.3)按照预设语法规则,将该视图组件的类名和创建该视图组件的实例创建代码的对应关系以硬编码的方式写入到预设工厂类中,以得到自定义的实例创建类;
(1.4)在预先定义的实例创建类中,确定该目标类名对应的目标实例创建代码,其中该实例创建类包括一组或多组视图组件的类名与实例创建代码之间通过硬编码方式得到的对应关系
其中,请一并参阅图2,该工厂方法的接口即为factory2方法的接口,可以用于对视图组件的创建,本申请实施例中新建一个预设工厂类,该预设工厂类继承原工厂方法的接口。
进一步的,通过自动化脚本扫描所有可扩展标记语言布局文件,得到视图组件的类名,按照预设语法规则,将视图组件的类名和创建视图组件的实例创建代码的对应关系以硬编码的方式写入到预设工厂类中,以得到自定义的实例创建类,使得后续可基于预先定义的实例创建类,直接确定需要的目标类名对应的目标实例创建代码,无需通过类加载器进行反射,避免了反射创建的步骤。在一实施方式中,该预设语法规则可以为switchcase形式。
例如,可以通过以下方式将该视图组件的类名和实例创建代码以预设语法规则写入到预设工厂方法中:
在步骤104中,使用目标实例创建方式,创建目标类名对应的实例。
其中,由于目标实例创建方式已经预先进行定义,因此,可以直接使用目标实例创建方式,创建目标类名对应的实例,该实例用于表示该目标视图组件,无需通过后续的类加载器进行反射,避免了反射创建的步骤,在实例创建后,对实例化的视图组件进行渲染处理,得到相应的应用页面。
在一些实施方式中,该使用目标实例创建方式,创建目标类名对应的实例的步骤,可以包括:使用该目标构造器,创建该目标类名对应的实例。
其中,由于前述已经对预设XML文件中的视图组件的类名和属性数据进行异步不渲染创建,所以该视图组件的类名已经存在缓存中,可以直接使用该目标构造器,创建该目标类名对应的实例,确保无需后续的反射创建。
在一些实施方式中,该使用目标实例创建方式,创建目标类名对应的实例,可以包括:使用该目标实例创建代码,创建该目标类名对应的实例。
其中,由于前述已经得到一个预设工厂类,因此,在操作系统需要对视图组件的类名进行实例创建时,可以直接通过该预设工厂类进行新建实例和返回实例,确保无需后续的反射创建。
由上述可知,本申请实施例通过当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式;使用目标实例创建方式,创建目标类名对应的实例。以此,通过确定目标可扩展标记语言布局文件中用于界面布局的目标视图组件的目标类名,以预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,使用目标实例创建方式,创建目标类名对应的实例,不需要走后续的反射处理,节省了视图组件的创建的时间,极大的提升了视图组件的创建的效率。
实施例二、
根据实施例一所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该视图组件的创建装置具体集成在服务器中进行说明。
请参阅图3,图3为本申请实施例提供的视图组件的创建方法的另一流程示意图。该方法流程可以包括:
在步骤201中,当终端接收到界面渲染指令时,获取目标可扩展标记语言布局文件。
在步骤202中,终端解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名。
在步骤203中,终端通过注释工具对可扩展标记语言布局文件中的视图组件进行注解。
需要说明的是,请一并参阅图2,在XML布局文件生成视图组件的流程中,需要读取和解析XML布局文件,该过程也比较耗时。
本申请为了进一步节省实例化创建时间,终端可以预先通过注释工具,如APT(Annotation Process Tool)对于需要进行优化的可扩展标记语言布局文件进行注解。
在步骤204中,终端通过代码生成框架将被注解的视图组件转换为代码数据,生成类文件,存储类文件和视图组件的类名之间逻辑关系,生成哈希表。
其中,终端可以通过代码生成框架,如javapoet框架对XML中的布局信息转成为相应的java代码数据(代码数据),进而生成java文件(即类文件),存储该类文件和布局信息(视图组件的类名)之间的逻辑关系,进而生成哈希表。
例如,请一并参阅图4,javapoet框架将XML中的布局信息C转成为相应的java代码数据,进而生成类文件B,存储该布局信息C和类文件之间的逻辑关系,进而生成哈希表A。
在步骤205中,终端在预先创建的哈希表中,确定目标类名对应的类文件。
其中,请一并参阅图4,终端可以解析预先创建的哈希表A中的布局信息C,确定目标类名对应的类文件B。
在步骤206中,终端执行类文件,以得到目标类名对应的实例。
其中,终端可以通过java编译器直接执行该类文件B,对视图组件的目标类名进行实例创建,并将该实例化后的视图组件进行渲染处理,生成相应的应用页面,通过直接执行类文件B进行实例化,无需通过类加载器进行反射,避免了反射创建的步骤。
在步骤207中,当终端检测到执行异常时,根据执行异常的目标代码数据生成提示信息并进行显示。
其中,本申请实施例中引入容灾逻辑,在开发阶段,当终端检测到执行异常时,获取异常的目标代码数据生成相应的提示信息,以抛出异常和进行提示。
由上述可知,本申请实施例通过当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式;使用目标实例创建方式,创建目标类名对应的实例。以此,通过确定目标可扩展标记语言布局文件中用于界面布局的目标视图组件的目标类名,以预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,使用目标实例创建方式,创建目标类名对应的实例,不需要走后续的反射处理,节省了视图组件的创建的时间,极大的提升了视图组件的创建的效率。
实施例三、
为便于更好的实施本申请实施例提供的视图组件的创建方法,本申请实施例还提供一种基于上述视图组件的创建方法的装置。其中名词的含义与上述视图组件的创建方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图5,图5为本申请实施例提供的视图组件的创建装置的结构示意图,其中该视图组件的创建装置可以包括获取单元301、解析单元302、确定单元303以及创建单元304等。
获取单元301,用于当接收到界面渲染指令时,获取目标可扩展标记语言布局文件。
解析单元302,用于解析该目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名。
确定单元303,在预先定义的实例创建方式中,确定该目标类名对应的目标实例创建方式,其中该实例创建方式非通过反射过程创建实例的方式。
在一些实施方式中,该确定单元303,用于:在预先定义的实例创建类中,确定该目标类名对应的目标实例创建代码,其中该实例创建类包括一组或多组视图组件的类名与实例创建代码之间通过硬编码方式得到的对应关系。
在一些实施方式中,该确定单元303,还用于:继承工厂方法的接口,得到预设工厂类;使用自动化脚本扫描一个或多个可扩展标记语言布局文件,以收集视图组件的类名;按照预设语法规则,将该视图组件的类名和创建该视图组件的实例创建代码的对应关系以硬编码的方式写入到预设工厂类中,以得到自定义的实例创建类;在预先定义的实例创建类中,确定该目标类名对应的目标实例创建代码,其中该实例创建类包括一组或多组视图组件的类名与实例创建代码之间通过硬编码方式得到的对应关系。
在一些实施方式中,该确定单元303,还用于在预先缓存的构造器中,确定该目标类名对应的目标构造器。
在一些实施方式中,该确定单元303,还用于在预先创建的哈希表中,确定该目标类名对应的类文件;其中该哈希表中记录有视图组件的类名与类文件之间的对应关系,该类文件用于创建该视图组件的实例。
在一些实施方式中,该确定单元303,还用于通过注释工具对可扩展标记语言布局文件中的视图组件进行注解;通过代码生成框架将被注解的视图组件转换为代码数据,生成类文件;存储该类文件和该视图组件的类名之间逻辑关系,生成哈希表;在预先创建的哈希表中,确定该目标类名对应的类文件;其中该哈希表中记录有视图组件的类名与类文件之间的对应关系,该类文件用于创建该视图组件的实例。
创建单元304,用于使用该目标实例创建方式,创建该目标类名对应的实例,该实例用于表示该目标视图组件。
在一些实施方式中,该创建单元304,用于使用该目标实例创建代码,创建该目标类名对应的实例。
在一些实施方式中,该创建单元304,还用于使用该目标构造器,创建该目标类名对应的实例。
在一些实施方式中,该创建单元304,还用于执行该类文件,以得到该目标类名对应的实例。
在一些实施方式中,如图6所示,该视图组件的创建装置,还包括:
提示单元305,用于当检测到执行异常时,根据执行异常的目标代码数据生成提示信息并进行显示。
以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
由上述可知,本申请实施例通过当获取单元301接收到界面渲染指令时,获取目标可扩展标记语言布局文件;解析单元302解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;确定单元303在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式;创建单元304使用目标实例创建方式,创建目标类名对应的实例。以此,通过确定目标可扩展标记语言布局文件中用于界面布局的目标视图组件的目标类名,以预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,使用目标实例创建方式,创建目标类名对应的实例,不需要走后续的反射处理,节省了视图组件的创建的时间,极大的提升了视图组件的创建的效率。
实施例四、
本申请实施例还提供一种终端,如图7所示,其示出了本申请实施例所涉及的终端的结构示意图,具体来讲:
该终端可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图7中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
终端还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该终端还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,终端还可以包括显示单元等,在此不再赘述。具体在本实施例中,终端中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;
解析该目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;
在预先定义的实例创建方式中,确定该目标类名对应的目标实例创建方式,其中该实例创建方式非通过反射过程创建实例的方式;
使用该目标实例创建方式,创建该目标类名对应的实例,该实例用于表示该目标视图组件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对视图组件的创建方法的详细描述,此处不再赘述。
由上述可知,本申请实施例的终端可以通过当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;解析目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;在预先定义的实例创建方式中,确定目标类名对应的目标实例创建方式;使用目标实例创建方式,创建目标类名对应的实例。以此,通过确定目标可扩展标记语言布局文件中用于界面布局的目标视图组件的目标类名,以预先定义的实例创建方式,确定目标类名对应的目标实例创建方式,使用目标实例创建方式,创建目标类名对应的实例,不需要走后续的反射处理,节省了视图组件的创建的时间,极大的提升了视图组件的创建的效率。
实施例五、
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种视图组件的创建方法中的步骤。例如,该指令可以执行如下步骤:
当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;
解析该目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;
在预先定义的实例创建方式中,确定该目标类名对应的目标实例创建方式,其中该实例创建方式非通过反射过程创建实例的方式;
使用该目标实例创建方式,创建该目标类名对应的实例,该实例用于表示该目标视图组件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种视图组件的创建方法中的步骤,因此,可以实现本申请实施例所提供的任一种视图组件的创建方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种视图组件的创建方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种视图组件的创建方法,其特征在于,应用于安卓客户端,所述创建方法包括:
当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;
解析所述目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;
在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式,其中所述实例创建方式非通过反射过程创建实例的方式;
使用所述目标实例创建方式,创建所述目标类名对应的实例,所述实例用于表示所述目标视图组件。
2.根据权利要求1所述的创建方法,其特征在于,在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式的步骤,包括:
在预先定义的实例创建类中,确定所述目标类名对应的目标实例创建代码,其中所述实例创建类包括一组或多组视图组件的类名与实例创建代码之间通过硬编码方式得到的对应关系;
所述使用所述目标实例创建方式,创建所述目标类名对应的实例的步骤,包括:
使用所述目标实例创建代码,创建所述目标类名对应的实例。
3.根据权利要求2所述的创建方法,其特征在于,实例创建类的定义步骤包括:
继承工厂方法的接口,得到预设工厂类;
使用自动化脚本扫描一个或多个可扩展标记语言布局文件,以收集视图组件的类名;
按照预设语法规则,将所述视图组件的类名和创建所述视图组件的实例创建代码的对应关系以硬编码的方式写入到预设工厂类中,以得到自定义的实例创建类。
4.根据权利要求1所述的创建方法,其特征在于,在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式的步骤,包括:
在预先缓存的构造器中,确定所述目标类名对应的目标构造器;
所述使用所述目标实例创建方式,创建所述目标类名对应的实例的步骤,包括:
使用所述目标构造器,创建所述目标类名对应的实例。
5.根据权利要求1所述的创建方法,其特征在于,在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式的步骤,包括:
在预先创建的哈希表中,确定所述目标类名对应的类文件;其中所述哈希表中记录有视图组件的类名与类文件之间的对应关系,所述类文件用于创建所述视图组件的实例;
所述使用所述目标实例创建方式,创建所述目标类名对应的实例的步骤,包括:
执行所述类文件,以得到所述目标类名对应的实例。
6.根据权利要求5所述的创建方法,其特征在于,哈希表的创建方式包括:
通过注释工具对可扩展标记语言布局文件中的视图组件进行注解;
通过代码生成框架将被注解的视图组件转换为代码数据,生成类文件;
存储所述类文件和所述视图组件的类名之间逻辑关系,生成哈希表。
7.根据权利要求1-6任意一项所述的创建方法,其特征在于,所述创建方法,还包括:
当检测到执行异常时,根据执行异常的目标代码数据生成提示信息并进行显示。
8.一种视图组件的创建装置,其特征在于,包括:
获取单元,用于当接收到界面渲染指令时,获取目标可扩展标记语言布局文件;
解析单元,用于解析所述目标可扩展标记语言布局文件,得到用于界面布局的目标视图组件的目标类名;
确定单元,用于在预先定义的实例创建方式中,确定所述目标类名对应的目标实例创建方式,其中所述实例创建方式非通过反射过程创建实例的方式;
创建单元,用于使用所述目标实例创建方式,创建所述目标类名对应的实例,所述实例用于表示所述目标视图组件。
9.根据权利要求8所述的视图组件的创建装置,其特征在于,所述确定单元,用于:
在预先定义的实例创建类中,确定所述目标类名对应的目标实例创建代码,其中所述实例创建类包括一组或多组视图组件的类名与实例创建代码之间通过硬编码方式得到的对应关系;
所述创建单元,用于:
使用所述目标实例创建代码,创建所述目标类名对应的实例。
10.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至7任一项所述的视图组件的创建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010613257.XA CN111782212A (zh) | 2020-06-30 | 2020-06-30 | 一种视图组件的创建方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010613257.XA CN111782212A (zh) | 2020-06-30 | 2020-06-30 | 一种视图组件的创建方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782212A true CN111782212A (zh) | 2020-10-16 |
Family
ID=72761257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010613257.XA Pending CN111782212A (zh) | 2020-06-30 | 2020-06-30 | 一种视图组件的创建方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782212A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463272A (zh) * | 2020-11-13 | 2021-03-09 | 广州市百果园网络科技有限公司 | 一种界面布局加载显示方法、系统、电子设备及存储介质 |
CN114253516A (zh) * | 2021-12-20 | 2022-03-29 | 航天信息股份有限公司 | 一种数据填报系统ui开发方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150749A1 (en) * | 2005-12-22 | 2007-06-28 | Andrew Monaghan | Creating a terminal application |
CN104361124A (zh) * | 2014-12-03 | 2015-02-18 | 北京和利时系统工程有限公司 | 存储数据的方法和装置以及检索存储节点的方法和装置 |
US20160048605A1 (en) * | 2014-08-14 | 2016-02-18 | International Business Machines Corporation | Integrating image renditions and page layout |
CN105574049A (zh) * | 2014-10-30 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 移动应用的页面处理方法、装置和系统 |
CN108664296A (zh) * | 2017-03-31 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 一种页面渲染方法和装置、一种页面处理方法和装置 |
CN110020307A (zh) * | 2017-11-30 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种客户端视图的绘制方法和装置 |
CN111158818A (zh) * | 2019-12-24 | 2020-05-15 | 中国建设银行股份有限公司 | 一种页面渲染方法和装置 |
-
2020
- 2020-06-30 CN CN202010613257.XA patent/CN111782212A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150749A1 (en) * | 2005-12-22 | 2007-06-28 | Andrew Monaghan | Creating a terminal application |
US20160048605A1 (en) * | 2014-08-14 | 2016-02-18 | International Business Machines Corporation | Integrating image renditions and page layout |
CN105574049A (zh) * | 2014-10-30 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 移动应用的页面处理方法、装置和系统 |
CN104361124A (zh) * | 2014-12-03 | 2015-02-18 | 北京和利时系统工程有限公司 | 存储数据的方法和装置以及检索存储节点的方法和装置 |
CN108664296A (zh) * | 2017-03-31 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 一种页面渲染方法和装置、一种页面处理方法和装置 |
CN110020307A (zh) * | 2017-11-30 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种客户端视图的绘制方法和装置 |
CN111158818A (zh) * | 2019-12-24 | 2020-05-15 | 中国建设银行股份有限公司 | 一种页面渲染方法和装置 |
Non-Patent Citations (1)
Title |
---|
马超: "基于可重用组件的海量文本数据处理工具的设计与实现", vol. 2018, no. 11, 15 November 2018 (2018-11-15), pages 138 - 630 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463272A (zh) * | 2020-11-13 | 2021-03-09 | 广州市百果园网络科技有限公司 | 一种界面布局加载显示方法、系统、电子设备及存储介质 |
CN112463272B (zh) * | 2020-11-13 | 2024-06-18 | 广州市百果园网络科技有限公司 | 一种界面布局加载显示方法、系统、电子设备及存储介质 |
CN114253516A (zh) * | 2021-12-20 | 2022-03-29 | 航天信息股份有限公司 | 一种数据填报系统ui开发方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100281463A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
US8201143B2 (en) | Dynamic mating of a modified user interface with pre-modified user interface code library | |
US8650532B2 (en) | Change notification and information update based on uncompiled software development project | |
CN110673847A (zh) | 配置页面的生成方法、装置、电子设备和可读存储介质 | |
CN102566984B (zh) | 一种配置参数的方法及装置 | |
EP2972827B1 (en) | Collaborative editing | |
US20230229406A1 (en) | Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product | |
US9141344B2 (en) | Hover help support for application source code | |
CN110990019A (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
US8082494B2 (en) | Rendering markup language macro data for display in a graphical user interface | |
CN102298518B (zh) | 从技术未知的管理命令到多个管理协议的转换 | |
CN111782212A (zh) | 一种视图组件的创建方法、装置及存储介质 | |
US9274755B2 (en) | Infrastructure for generating code using annotation and template generators | |
CN112506854A (zh) | 页面模板文件的存储和页面生成方法、装置、设备及介质 | |
US8112500B2 (en) | Technique of relaying communications between client apparatus and server apparatus | |
CN110825425A (zh) | 配置数据管理方法及装置、电子设备、存储介质 | |
CN111427568A (zh) | 接口配置方法及装置 | |
CN115576974A (zh) | 数据处理方法、装置、设备和介质 | |
CN114048415A (zh) | 表单生成方法及装置、电子设备和计算机可读存储介质 | |
CN113268232B (zh) | 一种页面皮肤生成方法、装置和计算机可读存储介质 | |
CN113296759B (zh) | 用户界面处理方法、用户界面处理系统、设备及存储介质 | |
CN111722849B (zh) | Java语言虚拟编译实现方法、系统及装置 | |
CN112988255B (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN114911541A (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN115022312A (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 |