具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的界面更新方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。具体地,终端102上安装有各种为用户提供服务的应用程序的客户端,服务器104则为对应客户端的后台服务器。由于终端102上客户端的用户界面需要频繁更新,而传统技术中采用开发并发布新版本的方式更新用户界面导致开发工作量大。基于此,本申请通过终端检测是否存在对应用程序的启动指令,当检测到对应用程序的启动指令时,则响应于该启动指令,并获取对应用程序的用户界面进行更新的页面布局文件;并在检测到对用户界面的打开指令时,采用的单例类解析对用户界面更新的页面布局文件,获取对用户界面更新的渲染数据;采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面,从而实现对终端上应用程序中用户界面的动态更新。
在本实施例中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,具体地,终端102可以具有iOS(iPhone Operation System,苹果移动设备操作***),服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种界面更新方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,响应于应用程序的启动指令,获取对应用程序的用户界面进行更新的页面布局文件。
其中,启动指令是指挥终端启动应用程序的指示或命令。用户界面是(UserInterface,简称UI)是指对应用程序的人机交互、操作逻辑、界面美观的整体设计,也是应用程序和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。用户界面是介于用户与硬件而设计的彼此之间交互沟通的桥梁,目的在使得用户能够方便有效率地去操作硬件以达成双向之交互,完成所希望借助硬件完成之工作。对应用程序的用户界面进行更新的页面布局文件是指对用户界面进行更新所需的数据结构,如可以包括对用户界面更新后的新界面的控件布局及相应属性等。在本实施例中,当终端检测到对应用程序的启动指令时,则响应于该启动指令,并获取对该应用程序的用户界面进行更新的页面布局文件,以通过后续步骤实现对用户界面的动态更新。
步骤204,当检测到对用户界面的打开指令时,采用单例类解析对用户界面进行更新的页面布局文件,获取对用户界面更新的渲染数据。
其中,打开指令是指挥终端打开应用程序中用户界面的指示或命令。具体地,用户界面的打开指令可以是应用程序通过路由(router)方式打开用户界面时发送的。单例类是指应用程序内一个创建后唯一的具有管理功能的对象。具体地,类是一种用户定义的引用数据类型,也称类类型,每个类包含数据说明和一组操作数据或传递消息的函数,而类的实例则称为对象。对象是对客观事物的抽象,类则是对对象的抽象。简单来讲,对象是类的实例,类是对象的模板,而单例类则是指应用程序内唯一一个具有管理功能的对象。渲染数据是对用户界面进行更新所需的后台数据。在本实施例中,当终端检测到对用户界面的打开指令时,则采用单例类解析对用户界面更新的页面布局文件,其中,解析过程包括但不限于对页面布局文件进行语法解析,从而获取页面布局文件中的控件布局及相应属性,并基于此建立相应的数据结构,以形成对用户界面更新的渲染数据。
步骤206,采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面。
具体的,采用上述的渲染数据对用户界面中各控件的位置、样式等进行计算,并根据计算结果对用户界面进行渲染,从而生成渲染后的新的用户界面,进而响应于对用户界面的打开指令,打开更新后的用户界面,以实现对终端上应用程序中用户界面的动态更新。
上述界面更新方法,通过响应于应用程序的启动指令,获取对应用程序的用户界面进行更新的页面布局文件,当检测到对用户界面的打开指令时,采用单例类解析对用户界面进行更新的页面布局文件,获取对用户界面更新的渲染数据,采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面,从而实现在应用程序启动时对终端上应用程序中用户界面的动态更新,且无需开发并发布新版本的应用程序,不仅节省了开发工作量,且极大的提高了渲染效率。
在一个实施例中,在采用上述方法对用户界面进行更新后,则当终端再次检测到对用户界面的打开指令时,则直接打开更新后的用户界面。可以理解的是,在对用户界面进行更新后,并在下次更新前,每次终端检测到对用户界面的打开指令时,则直接打开更新后的用户界面,从而无需重复对用户界面进行渲染,从而提高了加载用户界面的速度。
在一个实施例中,获取对应用程序的用户界面进行更新的页面布局文件,具体包括:获取与应用程序对应的更新数据模型;从更新数据模型中提取应用程序中需要更新的用户界面的页面布局文件。其中,更新数据模型是指应用程序更新所需的数据结构,包括更新后的应用程序中各用户界面的页面布局文件,页面布局文件则包括对应的控件布局及相应属性。在本实施例中,通过获取与应用程序对应的更新数据模型,并从更新数据模型中提取应用程序中需要更新的用户界面的页面布局文件,以便于实现对终端上应用程序中用户界面的动态更新。
在一个实施例中,如图3所示,获取与应用程序对应的更新数据模型,包括:
步骤302,在接收到对应用程序的启动指令时,向服务器发送更新数据模型获取请求。
其中,更新数据模型获取请求是用于从服务器获取对应用程序中用户界面进行更新的更新数据模型的请求。具体的,当需要对应用程序中用户界面进行更新时,可以通过服务器在该应用程序原生开发的基础上,自定义所需的用户界面的类以及相应属性。例如,在原生开发的用户界面的基础上,自定义一个控件为“ImageView”的JavaScrirpt语句的类,它拥有长、宽、圆角、图片等属性。并将控件为“ImageView”的类通过协议暴露给JavaScript端,使JavaScript端可以直接调用这个类,进而采用JavaScript编写用户界面的UI逻辑,即自定义的页面布局文件,从而生成对应用程序中用户界面进行更新的更新数据模型。因此,当终端接收到对应用程序的启动指令时,则向服务器发送对更新数据模型的获取请求,以指示服务器返回对应的更新数据模型。
步骤304,接收服务器返回的采用JS语言对原生用户界面***中用户界面自定义的页面布局文件。
其中,自定义的页面布局文件包括对应的控件布局及相应属性。具体地,终端接收服务器返回的采用JS语言对应用程序的原生用户界面***中各用户界面自定义的页面布局文件,从而实现对应用程序中用户界面的动态更新。
在一个实施例中,如图4所示,采用单例类解析对用户界面更新的页面布局文件,获取对用户界面更新的渲染数据,包括:
步骤402,采用基于JSCore的单例类对页面布局文件进行语法解析,获取页面布局文件中对应的控件布局及相应属性。
其中,单例类是指应用程序内唯一一个具有管理功能的对象。在本实施例中,当终端检测到对用户界面的打开指令时,则可以采用基于JSCore(JS核心)的单例类解析对用户界面更新的页面布局文件,其中,解析过程包括但不限于对页面布局文件进行语法解析,从而获取页面布局文件中的控件布局及相应属性。
步骤404,根据页面布局文件中对应的控件布局及相应属性,生成对用户界面更新的渲染数据。
其中,渲染数据是对用户界面进行更新所需的后台数据。在本实施例中,根据页面布局文件中对应的控件布局及相应属性,建立相应的数据结构,以生成对用户界面更新的渲染数据,进而采用渲染数据对用户界面进行渲染,以实现对应用程序中用户界面的动态更新。
在一个实施例中,获取与应用程序对应的更新数据模型,具体可以包括:在接收到对应用程序的启动指令时,从本地的存储空间中获取与应用程序对应的更新数据模型。其中,该更新数据模型可以是在应用程序上次运行过程中服务器下发给终端的。可以理解的是,通常应用程序处于运行状态时,与对应的服务器之间则处于连接状态。若此时开发人员通过服务器配置了对应用程序的更新数据模型,则服务器基于与应用程序的连接状态,可以将对该应用程序的更新数据模型下发至对应的终端。由于此时应用程序处于运行状态,因此终端不会立即对该应用程序进行更新,而是会将对该应用程序的更新数据模型存储在本地的存储空间中,并在后续接收到对该应用程序的启动指令时,从本地的存储空间中获取与应用程序对应的更新数据模型,以对应用程序进行更新。从而极大降低了更新过程中对网络的依赖性,提高了更新的速度及可靠性。
进一步地,本地的存储空间可以是本地的缓存空间,从而不占用终端的运行内存。且在从本地的缓存空间中获取与应用程序对应的更新数据模型,并对应用程序进行更新后,终端还可以删除缓存空间中的更新数据模型,从而避免终端进行不必要的重复更新。
在一个实施例中,如图5所示,以下以iOS终端为例,通过具体的交互实施例进一步说明本申请的界面更新方法,包括如下步骤:
步骤501,服务器获取开发人员在应用程序原生开发基础上创建的类。
具体的,当需要对应用程序中用户界面进行更新时,可以在该应用程序原生开发的基础上,自定义所需的用户界面的类,该类可以是基于JavaScrirpt语句的类,且具有相应的属性。例如,若创建的类为“ImageView”,它可以拥有长、宽、圆角、图片等属性。
步骤502,服务器通过JSCore提供的JSExport协议将创建的类暴露给JavaScript端。
例如,服务器可以将上述ImageView这个类通过协议暴露给JavaScript端,使JavaScript端可以直接调用这个类,示例代码如下:
var imageView=ImageView.initWithFrame(0,0,100,100)
imageView.imageUrl=“https:xxxx.xxxx.xxx?picAddress=12345”
步骤503,服务器获取开发人员使用JavaScript编写所需的用户界面的UI逻辑。
具体的,用户界面的UI逻辑可以是通过上述类描述用户界面的实例,即描述用户界面的页面布局文件。
其中,用户界面的UI逻辑示例代码如下:
上示例代码表示,在用户界面中创建一个视图,在视图上显示一个“hello world”的标签以及一张图片。
步骤504,服务器根据编写的用户界面的UI逻辑生成对用户界面进行更新的更新数据模型。
步骤505,iOS终端接收用户对应用程序的启动指令。
步骤506,iOS终端向服务器发送更新数据模型获取请求。
步骤507,iOS终端接收服务器返回的更新数据模型。
其中,更新数据模型具体可以是上述用户界面的UI逻辑示例代码。
步骤508,iOS终端检测到对用户界面的打开指令时,采用基于JSCore的单例类解析更新数据模型中对用户界面更新的页面布局文件,获取对用户界面更新的渲染数据。
即采用基于JSCore的单例类对上述用户界面的UI逻辑示例代码进行解析,调用JavaScript中的页面配置方法,获得相应的原生开发的用户界面的页面渲染数据。如上述示例代码,页面配置方法即上述代码中的layout方法,调用该方法后可以在原生环境中获得自定义的View对象,即上文示例代码中的backgroundView。
步骤509,iOS终端采用渲染数据对用户界面进行渲染,生成更新后的用户界面。
具体地,使用上述页面渲染数据,调用相应的原生UI类,赋予相应控件的各种UI数据,例如字体大小、字体颜色、边框等。如上述代码,在定义ImageView类时,可以使这个类的对象反射到一个原生控件UIImageView,因此,在获得自定义的view对象后,即可反射到相应的UIView对象。
例如原生UIView*view=[UIView new];
view.width=backgroundView.width;
view.height=backgroundView.height;
return view;
backgroundView即页面渲染数据,他的属性如上文直接赋予反射得到的控件。
步骤510,iOS终端响应于用户界面的打开指令,打开更新后的用户界面。
上述界面更新方法,当需要对应用程序中用户界面进行更新时,通过服务器在该应用程序原生开发的基础上,自定义所需的用户界面的类以及相应属性,进而进而采用JavaScript调用自定义的类编写用户界面的UI逻辑,并在iOS终端接收到应用程序的启动指令,获取与应用程序连接的服务器下发的对应用程序的用户界面的更新数据模型,当检测到对用户界面的打开指令时,采用基于JSCore的单例类解析对用户界面更新的页面布局文件,获取对用户界面更新的渲染数据,采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面,从而实现在应用程序启动时对iOS终端上应用程序中用户界面的动态更新,且无需开发并发布新版本的应用程序,不仅节省了开发工作量,还降低了更新过程中对网络的依赖性,从而极大的提高了渲染效率可可靠性。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种界面更新装置,包括:获取模块601、解析模块602和更新模块603,其中:
获取模块601,用于响应于应用程序的启动指令,获取对应用程序的用户界面进行更新的页面布局文件;
解析模块602,用于当检测到对用户界面的打开指令时,采用单例类解析对用户界面进行更新的页面布局文件,获取对用户界面更新的渲染数据;
更新模块603,用于采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面。
在一个实施例中,获取模块601具体包括:更新数据模型获取单元,用于获取与所述应用程序对应的更新数据模型;页面布局文件获取单元,用于从更新数据模型中提取应用程序中需要更新的用户界面的页面布局文件,所述页面布局文件包括对应的控件布局及相应属性。
在一个实施例中,更新数据模型获取单元具体用于:在接收到对应用程序的启动指令时,向服务器发送更新数据模型获取请求,所述更新数据模型获取请求用于指示服务器返回对应的更新数据模型;接收服务器返回的采用JS语言对应用程序的原生用户界面***中各用户界面自定义的页面布局文件。
在一个实施例中,解析模块具体用于:采用基于JSCore的单例类对页面布局文件进行语法解析,获取页面布局文件中对应的控件布局及相应属性;根据页面布局文件中对应的控件布局及相应属性,生成对用户界面更新的渲染数据。
在一个实施例中,更新数据模型获取单元具体用于:在接收到对应用程序的启动指令时,从本地的存储空间中获取与应用程序对应的更新数据模型。
在一个实施例中,获取模块601还包括接收单元,用于接收服务器下发的应用程序的更新数据模型,所述更新数据模型是在应用程序运行过程中服务器下发的;将应用程序的更新数据模型保存在本地的存储空间中。在一个实施例中,对用户界面的打开指令是应用程序通过路由方式打开所述用户界面时发送的。
关于界面更新装置的具体限定可以参见上文中对于界面更新方法的限定,在此不再赘述。上述界面更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种界面更新方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
响应于应用程序的启动指令,获取对应用程序的用户界面进行更新的页面布局文件;
当检测到对用户界面的打开指令时,采用单例类解析对用户界面进行更新的页面布局文件,获取对用户界面更新的渲染数据;
采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取与应用程序对应的更新数据模型;从更新数据模型中提取所述应用程序中需要更新的用户界面的页面布局文件,所述页面布局文件包括对应的控件布局及相应属性。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在接收到对应用程序的启动指令时,向服务器发送更新数据模型获取请求,所述更新数据模型获取请求用于指示服务器返回对应的更新数据模型;接收服务器返回的采用JS语言对应用程序的原生用户界面***中各用户界面自定义的页面布局文件,所述自定义的页面布局文件包括对应的控件布局及相应属性。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:采用基于JSCore的单例类对页面布局文件进行语法解析,获取页面布局文件中对应的控件布局及相应属性;根据页面布局文件中对应的控件布局及相应属性,生成对用户界面更新的渲染数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在接收到对应用程序的启动指令时,从本地的存储空间中获取与应用程序对应的更新数据模型。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收服务器下发的应用程序的更新数据模型,所述更新数据模型是在应用程序运行过程中服务器下发的;将应用程序的更新数据模型保存在本地的存储空间中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应于应用程序的启动指令,获取对应用程序的用户界面进行更新的页面布局文件;
当检测到对用户界面的打开指令时,采用单例类解析对用户界面进行更新的页面布局文件,获取对用户界面更新的渲染数据;
采用渲染数据对用户界面进行渲染,生成并打开更新后的用户界面。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取与应用程序对应的更新数据模型;从更新数据模型中提取所述应用程序中需要更新的用户界面的页面布局文件,所述页面布局文件包括对应的控件布局及相应属性。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在接收到对应用程序的启动指令时,向服务器发送更新数据模型获取请求,所述更新数据模型获取请求用于指示服务器返回对应的更新数据模型;接收服务器返回的采用JS语言对应用程序的原生用户界面***中各用户界面自定义的页面布局文件,所述自定义的页面布局文件包括对应的控件布局及相应属性。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:采用基于JSCore的单例类对页面布局文件进行语法解析,获取页面布局文件中对应的控件布局及相应属性;根据页面布局文件中对应的控件布局及相应属性,生成对用户界面更新的渲染数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在接收到对应用程序的启动指令时,从本地的存储空间中获取与应用程序对应的更新数据模型。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收服务器下发的应用程序的更新数据模型,所述更新数据模型是在应用程序运行过程中服务器下发的;将应用程序的更新数据模型保存在本地的存储空间中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。