CN108804101B - 创建界面元素的方法、装置、存储介质及移动终端 - Google Patents

创建界面元素的方法、装置、存储介质及移动终端 Download PDF

Info

Publication number
CN108804101B
CN108804101B CN201810504134.5A CN201810504134A CN108804101B CN 108804101 B CN108804101 B CN 108804101B CN 201810504134 A CN201810504134 A CN 201810504134A CN 108804101 B CN108804101 B CN 108804101B
Authority
CN
China
Prior art keywords
interface element
native language
preset
language component
predetermined
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.)
Active
Application number
CN201810504134.5A
Other languages
English (en)
Other versions
CN108804101A (zh
Inventor
谭振兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201810504134.5A priority Critical patent/CN108804101B/zh
Publication of CN108804101A publication Critical patent/CN108804101A/zh
Application granted granted Critical
Publication of CN108804101B publication Critical patent/CN108804101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种创建界面元素的方法、装置、存储介质及移动终端,方法包括:预定应用接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同;预定应用的原生语言组件通过预定解析器对配置文件进行解析;预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件;原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数,并基于反射构建机制按照功能函数和配置参数创建界面元素。

Description

创建界面元素的方法、装置、存储介质及移动终端
技术领域
本发明涉及数据处理领域,特别是涉及一种创建界面元素的方法、装置、存储介质及移动终端。
背景技术
原生(即Native)开发是开发人员最熟悉的应用软件(Application,简称为APP)开发模式了。原生开发可以访问设备中的所有功能,运行速度更快,性能更高,而且可以启用优秀的离线处理和存储能力等,提供最佳的用户体验,最优质的用户界面,最华丽的交互。原生开发人员众多,开发环境成熟,有许多的开源库提供开发人员调用,可以方便实现各种设计效果。但原生每开发一个界面(即Activity)都需要预先进行注册,否则使用该Activity的时候会引起APP的崩溃。
因此,在对APP中Activity的界面元素(即View)进行更改时,现有技术采用了两种方法,一种是APP在原生开发基础之上再接入ReactNative框架(一种开发框架)做业务的更新迭代,另一种是用Html5开发的App某些页面实现局部动态化。其中,ReactNative是可以实现页面的新增和内容的更新,Html5只能实现其页面内容的更新。
虽然现有技术都能够实现界面元素的更改,但无论采用上述哪种方法,都只是在原生语言的APP中进行的更改,都需要对更改的界面进行注册,等到发布APP的新版本时呈现给用户,在不发布新版本APP的情况下无法对APP界面中的界面元素进行更改,用户体验较差。
发明内容
本发明实施例提供一种创建界面元素的方法、装置、存储介质及移动终端,用以解决现有技术的如下问题:在不发布新版本APP的情况下无法对APP界面中的界面元素进行更改,用户体验较差。
为解决上述技术问题,一方面,本发明实施例提供一种创建界面元素的方法,包括:预定应用接收来自服务器的业务数据包,其中,所述业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,所述第一预定语言与所述预定应用的原生语言不同;所述预定应用的原生语言组件通过预定解析器对所述配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;所述预定应用的第一预定语言组件将所述业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其所述业务逻辑数据对应的功能函数索引通过预定传输通道发送至所述原生语言组件;所述原生语言组件按照所述业务逻辑数据对应的流程依次通过功能函数索引调用功能函数,并基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素。
可选的,所述基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素,包括:所述原生语言组件获取所述配置参数中的界面元素名称,按照反射构建机制构建初始界面元素;所述原生语言组件将所述初始界面元素的界面元素ID赋值为所述配置参数中的预设唯一ID;所述原生语言组件依次按照所述配置参数中的参数为界面元素ID赋值后的所述初始界面元素设置界面元素参数,以创建所述界面元素。
可选的,所述原生语言组件按照所述业务逻辑数据对应的流程依次通过功能函数索引调用功能函数之后,还包括:所述原生语言组件获取所述配置参数中的所述界面元素的预设唯一ID,并根据所述预设唯一ID确定所述界面元素的系统ID;所述原生语言组件检测所述系统ID是否存在已创建的界面元素;在所述系统ID不存在已创建的界面元素的情况下,所述原生语言组件基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素。
可选的,所述原生语言组件检测所述系统ID是否存在已创建的界面元素之后,还包括:在所述系统ID存在所述已创建的界面元素的情况下,按照所述配置参数修改所述已创建的界面元素对应的界面元素参数,以更新所述所述已创建的界面元素。
可选的,所述基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素之后,还包括:所述原生语言组件将创建好的所述界面元素添加到所述界面元素对应的父节点界面元素中,以在所述预定应用的预定界面中呈现所述界面元素。
另一方面,本发明实施例还提供一种创建界面元素的装置,包括:接收模块,用于接收来自服务器的业务数据包,其中,所述业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,所述第一预定语言与所述预定应用的原生语言不同;解析模块,用于通过所述预定应用的原生语言组件中的预定解析器对所述配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;处理模块,用于通过所述预定应用的第一预定语言组件将所述业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其所述业务逻辑数据对应的功能函数索引通过预定传输通道发送至所述原生语言组件;调用模块,用于通过所述原生语言组件按照所述业务逻辑数据对应的流程依次通过功能函数索引调用功能函数;创建模块,用于通过所述原生语言组件基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素。
可选的,所述创建模块包括:构建单元,用于通过所述原生语言组件获取所述配置参数中的界面元素名称,按照反射构建机制构建初始界面元素;第一设置单元,用于通过所述原生语言组件将所述初始界面元素的界面元素ID赋值为所述配置参数中的预设唯一ID;第二设置单元,用于通过所述原生语言组件依次按照所述配置参数中的参数为界面元素ID赋值后的所述初始界面元素设置界面元素参数,以创建所述界面元素。
可选的,还包括:确定模块,用于通过所述原生语言组件获取所述配置参数中的所述界面元素的预设唯一ID,并根据所述预设唯一ID确定所述界面元素的系统ID;检测模块,用于通过所述原生语言组件检测所述系统ID是否存在已创建的界面元素;所述创建模块,还用于在所述系统ID不存在已创建的界面元素的情况下,通过所述原生语言组件基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素。
可选的,所述创建模块,还用于在所述系统ID存在所述已创建的界面元素的情况下,按照所述配置参数修改所述已创建的界面元素对应的界面元素参数,以更新所述所述已创建的界面元素。
可选的,还包括:添加模块,用于通过所述原生语言组件将创建好的所述界面元素添加到所述界面元素对应的父节点界面元素中,以在所述预定应用的预定界面中呈现所述界面元素。
另一方面,本发明实施例还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述创建界面元素的方法的步骤。
另一方面,本发明实施例还提供一种移动终端,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现上述创建界面元素的方法的步骤。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广,解决了现有技术的如下问题:在不发布新版本APP的情况下无法对APP界面中的界面元素进行更改,用户体验较差。
附图说明
图1是本发明第一实施例中创建界面元素的方法的流程图;
图2是本发明第二实施例中创建界面元素的方法的流程图;
图3是本发明第三实施例中创建界面元素的方法的流程图;
图4是本发明第四实施例中创建界面元素的方法的流程图;
图5是本发明第五实施例中创建界面元素的装置的结构示意图;
图6是本发明第六实施例中创建界面元素的装置的结构示意图;
图7是本发明第七实施例中创建界面元素的装置的结构示意图;
图8是本发明第八实施例中创建界面元素的装置的结构示意图;
图9是本发明第九实施例中存储了配置参数的类对象实例示意图。
具体实施方式
为了解决现有技术的如下问题:在不发布新版本APP的情况下无法对APP界面中的界面元素进行更改,用户体验较差;本发明提供了一种创建界面元素的方法、装置、存储介质及移动终端,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明第一实施例提供了一种创建界面元素的方法,该方法的流程如图1所示,包括步骤S101至S104:
S101,预定应用接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当预定应用接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
S102,预定应用的原生语言组件通过预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中。
原生语言组件对应设置了解析器,在接收到业务数据包之后,就可以对该数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
S103,预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
S104,原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数,并基于反射构建机制按照功能函数和配置参数创建界面元素。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而可以根据该逻辑调用对应的功能函数来实现创建界面元素的功能,具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第二实施例提供了一种创建界面元素的方法,该方法的流程如图2所示,包括步骤S201至S207:
S201,预定应用接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当预定应用接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
S202,预定应用的原生语言组件通过预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中。
原生语言组件对应设置了解析器,在接收到业务数据包之后,就可以对该数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
S203,预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
S204,原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数。
S205,原生语言组件获取配置参数中的界面元素名称,按照反射构建机制构建初始界面元素。
该初始界面元素相当于只根据一个名字构建一个界面元素,但界面元素具体是什么样的还并未知晓。
S206,原生语言组件将初始界面元素的界面元素ID赋值为配置参数中的预设唯一ID。
当为初始界面元素赋值预设唯一ID后,该初始界面元素就具有了一个标识号,为后续创建好的界面元素提供查找基础。
S207,原生语言组件依次按照配置参数中的参数为界面元素ID赋值后的初始界面元素设置界面元素参数,以创建界面元素。
上述S205至S207即为基于反射构建机制按照功能函数和配置参数创建界面元素的过程。
上述过程中,当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而可以根据该逻辑调用对应的功能函数来实现创建界面元素的功能,具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第三实施例提供了一种创建界面元素的方法,该方法的流程如图3所示,包括步骤S301至S308:
S301,预定应用接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当预定应用接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
S302,预定应用的原生语言组件通过预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中。
原生语言组件对应设置了解析器,在接收到业务数据包之后,就可以对该数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
S303,预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
S304,原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数。
S305,原生语言组件获取配置参数中的界面元素的预设唯一ID,并根据预设唯一ID确定界面元素的系统ID。
S306,原生语言组件检测系统ID是否存在已创建的界面元素。如果不存在,则执行S307,否则,执行S308。该过程即确定预定应用中是否存在该系统ID对应的已经创建的界面元素。通过系统ID检测是否存在已创建的界面元素的过程能够更加快速的执行系统流程,操作过程较为快速。
S307,在系统ID不存在已创建的界面元素的情况下,原生语言组件基于反射构建机制按照功能函数和配置参数创建界面元素。
S308,在系统ID存在已创建的界面元素的情况下,按照配置参数修改已创建的界面元素对应的界面元素参数,以更新已创建的界面元素。
上述过程实现时,当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而可以根据该逻辑调用对应的功能函数来实现创建界面元素的功能,具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第四实施例提供了一种创建界面元素的方法,该方法的流程如图4所示,包括步骤S401至S405:
S401,预定应用接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当预定应用接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
S402,预定应用的原生语言组件通过预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中。
原生语言组件对应设置了解析器,在接收到业务数据包之后,就可以对该数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
S403,预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
S404,原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数,并基于反射构建机制按照功能函数和配置参数创建界面元素。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而可以根据该逻辑调用对应的功能函数来实现创建界面元素的功能,具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
S405,原生语言组件将创建好的界面元素添加到界面元素对应的父节点界面元素中,以在预定应用的预定界面中呈现界面元素。
至此,界面元素创建完成,可以呈现在界面上并且可以正常使用。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第五实施例提供了一种创建界面元素的装置,该装置的结构示意如图5所示,包括:
接收模块10,用于接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同;解析模块20,与接收模块10耦合,用于通过预定应用的原生语言组件中的预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;处理模块30,与解析模块20耦合,用于通过预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件;调用模块40,与处理模块30耦合,用于通过原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数;创建模块50,与调用模块40耦合,用于通过原生语言组件基于反射构建机制按照功能函数和配置参数创建界面元素。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当接收模块10接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
原生语言组件对应设置了解析器,在接收到业务数据包之后,解析模块20就可以通过该解析器对数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,处理模块30会通过第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而调用模块40可以根据该逻辑调用对应的功能函数,使得创建模块50来实现创建界面元素的功能。具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第六实施例提供了一种创建界面元素的装置,该装置的结构示意如图6所示,包括:
接收模块10,用于接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同;解析模块20,与接收模块10耦合,用于通过预定应用的原生语言组件中的预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;处理模块30,与解析模块20耦合,用于通过预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件;调用模块40,与处理模块30耦合,用于通过原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数;创建模块50,与调用模块40耦合,用于通过原生语言组件基于反射构建机制按照功能函数和配置参数创建界面元素;其中,创建模块50包括:构建单元501,用于通过原生语言组件获取配置参数中的界面元素名称,按照反射构建机制构建初始界面元素;第一设置单元502,与构建单元501耦合,用于通过原生语言组件将初始界面元素的界面元素ID赋值为配置参数中的预设唯一ID;第二设置单元503,与第一设置单元502耦合,用于通过原生语言组件依次按照配置参数中的参数为界面元素ID赋值后的初始界面元素设置界面元素参数,以创建界面元素。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当接收模块10接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
原生语言组件对应设置了解析器,在接收到业务数据包之后,解析模块20就可以通过该解析器对数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,处理模块30会通过第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而调用模块40可以根据该逻辑调用对应的功能函数,使得创建模块50来实现创建界面元素的功能。具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第七实施例提供了一种创建界面元素的装置,该装置的结构示意如图7所示,包括:
接收模块10,用于接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同;解析模块20,与接收模块10耦合,用于通过预定应用的原生语言组件中的预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;处理模块30,与解析模块20耦合,用于通过预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件;调用模块40,与处理模块30耦合,用于通过原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数;确定模块60,与调用模块40耦合,用于通过原生语言组件获取配置参数中的界面元素的预设唯一ID,并根据预设唯一ID确定界面元素的系统ID;检测模块70,与确定模块60耦合,用于通过原生语言组件检测系统ID是否存在已创建的界面元素;创建模块50,与检测模块70耦合,用于在系统ID不存在已创建的界面元素的情况下,通过原生语言组件基于反射构建机制按照功能函数和配置参数创建界面元素;还用于在系统ID存在已创建的界面元素的情况下,按照配置参数修改已创建的界面元素对应的界面元素参数,以更新已创建的界面元素。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当接收模块10接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
原生语言组件对应设置了解析器,在接收到业务数据包之后,解析模块20就可以通过该解析器对数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,处理模块30会通过第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而调用模块40可以根据该逻辑调用对应的功能函数,使得创建模块50来实现创建界面元素的功能。具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素,该过程中还增加了确定是否存在该系统ID对应的已经创建的界面元素的过程,进而通过系统ID检测是否存在已创建的界面元素的过程能够更加快速的执行系统流程,操作过程较为快速。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第八实施例提供了一种创建界面元素的装置,该装置的结构示意如图8所示,包括:
接收模块10,用于接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同;解析模块20,与接收模块10耦合,用于通过预定应用的原生语言组件中的预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;处理模块30,与解析模块20耦合,用于通过预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件;调用模块40,与处理模块30耦合,用于通过原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数;创建模块50,与调用模块40耦合,用于通过原生语言组件基于反射构建机制按照功能函数和配置参数创建界面元素;添加模块80,与创建模块50耦合,用于通过原生语言组件将创建好的界面元素添加到界面元素对应的父节点界面元素中,以在预定应用的预定界面中呈现界面元素。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当接收模块10接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
原生语言组件对应设置了解析器,在接收到业务数据包之后,解析模块20就可以通过该解析器对数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,处理模块30会通过第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而调用模块40可以根据该逻辑调用对应的功能函数,使得创建模块50来实现创建界面元素的功能。具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
本发明实施例的第一预定语言是与原生语言不同的语言,其可以动态下发,因此预定应用能够随时接收到业务数据包,进而使用业务数据包中的业务逻辑数据和配置参数来通过反射构建机制创建界面元素,并将界面元素添加到界面上,则界面元素可以呈现在界面上并且可以正常使用。本实施例能够随时接收业务数据包,并能够根据该业务数据包动态的创建界面元素,不需要等到发布新版本的APP就能够更改界面元素,用户体验较好,也较适合商业推广。
本发明第九实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤,本领域技术人员可以根据如下步骤编写对应的程序代码。
S11,预定应用接收来自服务器的业务数据包,其中,业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,第一预定语言与预定应用的原生语言不同。
S12,预定应用的原生语言组件通过预定解析器对配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中。
S13,预定应用的第一预定语言组件将业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其业务逻辑数据对应的功能函数索引通过预定传输通道发送至原生语言组件。
S14,原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数。
S15,并基于反射构建机制按照功能函数和配置参数创建界面元素。
本发明实施例为了能够自动让预定应用中界面的界面元素更改,因此在服务器侧会设置一个业务数据包,并将该业务数据包发送至预定应用。具体实现时,该业务数据包是需要动态下发的,因此,其包括的数据中应该是含有能够动态下发的语言编写的数据。由于配置文件通常都是采用XML编写的,是不具备动态下发能力的,因此,在设置时,需要第一预定语言为可以动态下发的语言,例如可以是JavaScript。
当预定应用接收到该业务数据包后,就可以利用该业务数据包中的业务逻辑数据和配置文件了。
原生语言组件对应设置了解析器,在接收到业务数据包之后,就可以对该数据进行解析了,进而得到界面元素的配置参数。当获取到该配置参数后,并不是马上使用获取到的所有参数,而是将这些参数放置到一个容器中,即存储在预设存储空间中,该预设存储空间在程序设置时可以作为一个类对象实例存在。
解析出来的配置参数通常是能够构建界面元素的所有信息,例如至少包括名称、属性集合、子节点、父节点、预设唯一ID、系统ID等。在开发人员设置程序时,通常还会在配置文件中包括可以生成界面元素的功能函数索引,以便更方便的创建界面元素。
由于业务逻辑数据是通过第一预定语言编写的,因此,在原生语言组件识别该业务逻辑数据时,也是无法识别的,因此,第一预定语言组件会在接收到业务数据包后,将业务逻辑数据按照原生语言进行逻辑转换,以便能够将对应的业务逻辑告知原生语言组件,使得原生语言组件也能够识别该业务逻辑数据。
当业务逻辑数据进行逻辑转换后,原生语言组件则可以识别该业务逻辑,进而可以根据该逻辑调用对应的功能函数来实现创建界面元素的功能,具体实现时,每一个流程涉及到的功能函数都是按照逻辑调用的,调用该功能函数时,可以根据功能函数对应的功能获取对应的配置参数,进而按照反射构建机制一步步根据配置参数创建所需要的界面元素。上述创建界面元素的过程可以是对已有界面元素进行更新而创建界面元素,也可以是对不存在的界面元素进行的创建过程。
计算机程序在被处理器执行基于反射构建机制按照功能函数和配置参数创建界面元素的步骤时,具体实现如下步骤:原生语言组件获取配置参数中的界面元素名称,按照反射构建机制构建初始界面元素;原生语言组件将初始界面元素的界面元素ID赋值为配置参数中的预设唯一ID;原生语言组件依次按照配置参数中的参数为界面元素ID赋值后的初始界面元素设置界面元素参数,以创建界面元素。
计算机程序在被处理器执行原生语言组件按照业务逻辑数据对应的流程依次通过功能函数索引调用功能函数的步骤之后,还被处理器执行以下步骤:原生语言组件获取配置参数中的界面元素的预设唯一ID,并根据预设唯一ID确定界面元素的系统ID;原生语言组件检测系统ID是否存在已创建的界面元素;在系统ID不存在已创建的界面元素的情况下,原生语言组件基于反射构建机制按照功能函数和配置参数创建界面元素。
计算机程序在被处理器执行原生语言组件检测系统ID是否存在已创建的界面元素的步骤之后,还被处理器执行以下步骤:在系统ID存在已创建的界面元素的情况下,按照配置参数修改已创建的界面元素对应的界面元素参数,以更新已创建的界面元素。
计算机程序在被处理器执行基于反射构建机制按照功能函数和配置参数创建界面元素的步骤之后,还被处理器执行以下步骤:原生语言组件将创建好的界面元素添加到界面元素对应的父节点界面元素中,以在预定应用的预定界面中呈现界面元素。
下面结合一个编程过程中涉及到的具体实例对上述过程进行说明,但并不对上述实施例构成限定。
现有技术实现不进行应用版本更新而对Activity中内容(界面元素)的更新是一个难题,而如果使用原生开发来实现Activity的动态增加会比较困难,因此,在使用DU框架进行动态的增加Activity的时候对其界面的元素的控制,本实施例提供了一种类似Android原生中把XML配置映射成界面View的技术,具体实现如下。
本发明实施例采用了DU框架,DU框架是类似与React-Native的热更新框架,React-Native是将所有的开发放在了JS(JavaScript的缩写)中。DU框架也是类似的设计,他是通过一组协议来实现JS和Native的通信,从而达到通过JS(相当于上述的第一预定语言组件)来控制Native(相当于上述的原生语言组件)的组件交互,其中,JS只是用来做逻辑控制,涉及到View(即界面元素)的展现还是Native在做。在考虑View的实现过程中,本发明实施例先将界面布局写入XML(相当于上述的第二预定语言)中,然后在Activity中onCreate方法(一个功能函数)中进行XML文件(相当于上述的第二预定语言设置的配置文件)路径设置,再在onCreate方法中对XML文件内容进行解析生产视图View然后添加到Activity的跟布局View中。同样我们采用类似的方法实现View的生产和添加,但是在实现的过程中,因为DU框架和原生本质的不同。本实施例在涉及整套自定义配置文件转化为View的解决方案中有很多与原生不同之处。
(1)布局文件XML的加载。
在Android原生开发过程中,我们只需要将R文件中res/layout目录下局XML文件所生成的id作为参数传递到onCreate方法中。但是在DU框架中,XML文件在asset目录下不能通过R文件以id作为索引的方式快速查找。所以,本实施例启动原生Activity的时候传递的是服务器动态后缓存在asset目录下的XML文件的路径地址,通知要将启动该Activity对应的Activity.JS文件的路径传递给原生Activity,这样有界面和业务逻辑处理的Activity才算与原生相同。
(2)XML文件映射出View。
XML文件映射出View的过程也是仿Android原生的设计。通过本实施例设计的LayoutParser类(一段程序)的parseLayoutXML方法(改程序对应的一个功能)将传递的XML文件路径所在的文件找到,并利用Android原生解析XML文件的XMLPullParser解析器解析出每个XML文件中的View,在解析的过程中,会将整个XML文件中的内容生成一个TemplateViewVo类对象实例(相当于预设存储空间)来存储XML文件中的配置参数,图9为存储了配置参数的类对象实例示意图。接下来,通过递归的方式将XML文件中生成的TemplateViewVo类对象实例中的所有View节点遍历出来,方便以后业务逻辑对界面元素的操作。
Android原生开发中对View的操作都是根据R文件中生成的id找到View树种的相同id节点的View进行操作。本实施例在设计视图操作的时候也有类似的id方便以便于视图的操作。在上一步XML解析器XMLPullParser每解析出一个节点的时候,便会从0x30000000开始构造出一个自增的id值赋给当前TemplateViewVo类对象实例中的ViewId属性。这样就也可以根据View的id和所有View的TemplateViewVo类对象实例对应起来操作每一个View。
每一个View的信息我们都存储在TemplateViewVo类对象实例中了,这样下一步就是构造出所有的View。通过TemplateViewVo类对象实例中存储的name属性值反射构造出对应的View,然后再给View的id赋值ViewId。下一步,将所有的TemplateViewVo类对象实例中的属性标签以及对应的值解析,并赋值给View对应的各个属性。最后一步,创建View对应的Proxy类(即代理类,是一段程序,可以将最终构造的View呈现在界面上),这些代理类和View类的对应关系我们在XML文件中已经声明了的,所以也可以根据TemplateViewVo类对象实例的name属性值反射获取对应的Proxy类实例对象赋值给TemplateViewVo类对象实例的baseProxy属性,并将其与改View进行绑定,可以按照View继承的层次在Proxy层继承实现View所有的属性解析和赋值。每当一个View构造完毕我们都会add到该View的根View上,当前最初传递的根View是Activity的contentView。这样整个界面XML文件所有声明的View元素都就展示在Activity中了。
最后,为了方便根据ViewIdString(字符串)寻找对应的View,我们将ViewIdString作为key(关键值),将对应的TemplateViewVo类对象实例作为value(索引值)存储在一个当前Activity实例的Map(集合)中。
(3)JS端操作Native生产的所有View元素。
在JS端进行开发的时候不知道View对应的ID,所以我们只能根据当前Activity的XML文件界面中View对应的ViewIdString来想办法与原生的View做关系映射。本实施例可以通过Protocol协议利用当前原生Activity缓存的以ViewIdString作为key将对应的TemplateViewVo类对象实例作为value存储的数据集Map,从中获取对应的View的所有信息,然后根据JS端传递过来的参数名和参数列表对View的方法进行反射调用。
本实施例使用DU框架中的这种自定义配置文件转化为系统视图文件的实现方法,能够使开发的应用产品的性能体验有类似于原生的效果,并且能够使Android开发者能很快的接入现在的项目中并熟练上手开发新需求。
实现时,上述存储介质可以设置在移动终端中,作为移动终端存储器的全部或部分存在,本领域技术人员可以根据实际需求进行设置。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

Claims (10)

1.一种创建界面元素的方法,其特征在于,包括:
预定应用接收来自服务器的业务数据包,其中,所述业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,所述第一预定语言与所述预定应用的原生语言不同;
所述预定应用的原生语言组件通过预定解析器对所述配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;所述预设存储空间作为一个类对象实例存在;
所述预定应用的第一预定语言组件将所述业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其所述业务逻辑数据对应的功能函数索引通过预定传输通道发送至所述原生语言组件;
所述原生语言组件按照所述业务逻辑数据对应的流程依次通过功能函数索引调用功能函数,并基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素;
所述基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素之后,还包括:
所述原生语言组件将创建好的所述界面元素添加到所述界面元素对应的父节点界面元素中,以在所述预定应用的预定界面中呈现所述界面元素。
2.如权利要求1所述的方法,其特征在于,所述基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素,包括:
所述原生语言组件获取所述配置参数中的界面元素名称,按照反射构建机制构建初始界面元素;
所述原生语言组件将所述初始界面元素的界面元素ID赋值为所述配置参数中的预设唯一ID;
所述原生语言组件依次按照所述配置参数中的参数为界面元素ID赋值后的所述初始界面元素设置界面元素参数,以创建所述界面元素。
3.如权利要求1所述的方法,其特征在于,所述原生语言组件按照所述业务逻辑数据对应的流程依次通过功能函数索引调用功能函数之后,还包括:
所述原生语言组件获取所述配置参数中的所述界面元素的预设唯一ID,并根据所述预设唯一ID确定所述界面元素的系统ID;
所述原生语言组件检测所述系统ID是否存在已创建的界面元素;
在所述系统ID不存在已创建的界面元素的情况下,所述原生语言组件基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素。
4.如权利要求3所述的方法,其特征在于,所述原生语言组件检测所述系统ID是否存在已创建的界面元素之后,还包括:
在所述系统ID存在所述已创建的界面元素的情况下,按照所述配置参数修改所述已创建的界面元素对应的界面元素参数,以更新所述已创建的界面元素。
5.一种创建界面元素的装置,其特征在于,包括:
接收模块,用于接收来自服务器的业务数据包,其中,所述业务数据包包括:通过第一预定语言设置的业务逻辑数据和通过第二预定语言设置的配置文件,其中,所述第一预定语言与预定应用的原生语言不同;
解析模块,用于通过所述预定应用的原生语言组件中的预定解析器对所述配置文件进行解析,并将解析得到的配置参数存储在预设存储空间中;所述预设存储空间作为一个类对象实例存在;
处理模块,用于通过所述预定应用的第一预定语言组件将所述业务逻辑数据按照原生语言进行逻辑转换,并将转换后的业务逻辑数据及其所述业务逻辑数据对应的功能函数索引通过预定传输通道发送至所述原生语言组件;
调用模块,用于通过所述原生语言组件按照所述业务逻辑数据对应的流程依次通过功能函数索引调用功能函数;
创建模块,用于通过所述原生语言组件基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素;
添加模块,用于通过所述原生语言组件将创建好的所述界面元素添加到所述界面元素对应的父节点界面元素中,以在所述预定应用的预定界面中呈现所述界面元素。
6.如权利要求5所述的装置,其特征在于,所述创建模块包括:
构建单元,用于通过所述原生语言组件获取所述配置参数中的界面元素名称,按照反射构建机制构建初始界面元素;
第一设置单元,用于通过所述原生语言组件将所述初始界面元素的界面元素ID赋值为所述配置参数中的预设唯一ID;
第二设置单元,用于通过所述原生语言组件依次按照所述配置参数中的参数为界面元素ID赋值后的所述初始界面元素设置界面元素参数,以创建所述界面元素。
7.如权利要求5所述的装置,其特征在于,还包括:
确定模块,用于通过所述原生语言组件获取所述配置参数中的所述界面元素的预设唯一ID,并根据所述预设唯一ID确定所述界面元素的系统ID;
检测模块,用于通过所述原生语言组件检测所述系统ID是否存在已创建的界面元素;
所述创建模块,还用于在所述系统ID不存在已创建的界面元素的情况下,通过所述原生语言组件基于反射构建机制按照所述功能函数和所述配置参数创建所述界面元素。
8.如权利要求7所述的装置,其特征在于,
所述创建模块,还用于在所述系统ID存在所述已创建的界面元素的情况下,按照所述配置参数修改所述已创建的界面元素对应的界面元素参数,以更新所述已创建的界面元素。
9.一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述创建界面元素的方法的步骤。
10.一种移动终端,至少包括存储器、处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器在执行所述存储器上的计算机程序时实现权利要求1至4中任一项所述创建界面元素的方法的步骤。
CN201810504134.5A 2018-05-23 2018-05-23 创建界面元素的方法、装置、存储介质及移动终端 Active CN108804101B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810504134.5A CN108804101B (zh) 2018-05-23 2018-05-23 创建界面元素的方法、装置、存储介质及移动终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810504134.5A CN108804101B (zh) 2018-05-23 2018-05-23 创建界面元素的方法、装置、存储介质及移动终端

Publications (2)

Publication Number Publication Date
CN108804101A CN108804101A (zh) 2018-11-13
CN108804101B true CN108804101B (zh) 2022-11-04

Family

ID=64091540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810504134.5A Active CN108804101B (zh) 2018-05-23 2018-05-23 创建界面元素的方法、装置、存储介质及移动终端

Country Status (1)

Country Link
CN (1) CN108804101B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354014A (zh) * 2014-08-18 2016-02-24 阿里巴巴集团控股有限公司 应用界面渲染展示方法及装置
CN106686200A (zh) * 2015-11-09 2017-05-17 五八同城信息技术有限公司 移动应用程序更新方法、移动终端及更新系统
CN107391169A (zh) * 2017-06-09 2017-11-24 口碑控股有限公司 安卓页面的动态更新方法和装置
CN108021614A (zh) * 2017-08-18 2018-05-11 口碑(上海)信息技术有限公司 一种用于页面动态加载的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354014A (zh) * 2014-08-18 2016-02-24 阿里巴巴集团控股有限公司 应用界面渲染展示方法及装置
CN106686200A (zh) * 2015-11-09 2017-05-17 五八同城信息技术有限公司 移动应用程序更新方法、移动终端及更新系统
CN107391169A (zh) * 2017-06-09 2017-11-24 口碑控股有限公司 安卓页面的动态更新方法和装置
CN108021614A (zh) * 2017-08-18 2018-05-11 口碑(上海)信息技术有限公司 一种用于页面动态加载的方法及系统

Also Published As

Publication number Publication date
CN108804101A (zh) 2018-11-13

Similar Documents

Publication Publication Date Title
CN110324169B (zh) 一种接口管理的方法和装置
CN108804100B (zh) 创建界面元素的方法、装置、存储介质及移动终端
US20190102201A1 (en) Component invoking method and apparatus, and component data processing method and apparatus
CN101853152B (zh) 一种生成用户图形界面的方法和系统
CN110673923A (zh) Xwiki系统配置方法、系统及计算机设备
CN113760324A (zh) 构建微前端应用的方法和装置
CN113141405A (zh) 服务访问方法、中间件系统、电子设备和存储介质
CN110457132B (zh) 一种功能对象的创建方法、装置和终端设备
CN115086166A (zh) 计算系统、容器网络配置方法及存储介质
CN108365976B (zh) 网络服务的优化方法及装置
CN117112122A (zh) 一种集群部署方法和装置
CN114706616A (zh) 小程序构建方法和装置
US11494184B1 (en) Creation of transportability container files for serverless applications
CN113179269A (zh) 基于物联网的协议数据解析方法、系统、介质及程序产品
CN108804101B (zh) 创建界面元素的方法、装置、存储介质及移动终端
US11513833B1 (en) Event listener interface for container-based execution of serverless functions
KR101674543B1 (ko) Netconf 프로토콜의 콘텐츠 계층 개선을 위한 장치 및 방법
CN111488286B (zh) 一种Android模块独立开发的方法及装置
CN114186156A (zh) 一种子应用的访问方法、装置、介质及设备
CN112947941A (zh) 一种添加异常处理代码的方法和装置
CN106570143B (zh) 一种发送响应对象的方法和装置
CN113760481A (zh) 一种分布式定时任务调度系统和方法
US20040216140A1 (en) Method and system for accessing system operations through an interface layer
CN113535188A (zh) 私有化部署的方法和装置
CN112217852A (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
GR01 Patent grant
GR01 Patent grant