一种信息处理方法、装置、设备及存储介质
技术领域
本申请涉及信息处理领域,涉及但不限于一种信息处理方法、装置、设备及存储介质。
背景技术
终端设备(例如手机,平板电脑等)通常会安装各种应用程序(Application,APP),其中,每个APP中包括有供用户查看的界面。
目前,对APP中的界面进行修改时,服务器通常需要对包括该界面的整个模板文件进行修改,并将修改后的模板文件发送给客户端,由客户端再次进行加载,然后重新进行一遍界面初始化的流程以完成界面刷新。
这样,如果只是对界面的内容进行修改,那么就需要对整个模板文件进行修改,然后再对整个模板文件进行二进制编码、加载、解码、解析和渲染,才能在客户端上显示修改后的界面。这样,会产生对界面进行修改的修改周期长的问题。
发明内容
本申请实施例为解决相关技术中存在的至少一个问题而提供一种信息处理方法、装置、设备及存储介质,能够缩短对界面进行修改的修改周期。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提供一种信息处理方法,所述方法包括:
接收用户对目标界面的修改操作;
确定所述修改操作针对的待修改控件的控件ID;所述待修改控件为所述目标界面中的控件;
对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表;
将所述修改后的嵌套关系表发送至客户端。
第二方面,本申请实施例提供一种信息处理方法,所述方法包括:
接收修改后的嵌套关系表;所述修改后的嵌套关系表是对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改得到的;
基于所述修改后的嵌套关系表,呈现修改后的目标界面;所述修改后的目标界面中的所述待修改控件相对于所述目标界面中所述待修改控件存在变化。
第三方面,本申请实施例提供一种信息处理装置,所述装置包括:
第一接收单元,用于接收用户对目标界面的修改操作;
确定单元,用于确定所述修改操作针对的待修改控件的控件ID;所述待修改控件为所述目标界面中的控件;
修改单元,用于对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表;
发送单元,用于将所述修改后的嵌套关系表发送至客户端。
第四方面,本申请实施例提供一种信息处理装置,所述装置包括:
第二接收单元,用于接收修改后的嵌套关系表;所述修改后的嵌套关系表是对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改得到的;
显示单元,用于基于所述修改后的嵌套关系表,呈现修改后的目标界面;所述修改后的目标界面中的所述待修改控件相对于所述目标界面中所述待修改控件存在变化。
第五方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述信息处理方法。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述信息处理方法。
本申请实施例提供了一种信息处理方法、装置、设备及存储介质,服务器接收用户对目标界面的修改操作,确定所述修改操作针对的待修改控件的控件ID;所述待修改控件为所述目标界面中的控件;对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表;将所述修改后的嵌套关系表发送至客户端。这样,在对界面进行修改的过程中,只需确定目标界面中的待修改控件的控件ID,并对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改即可,避免对整个模板文件进行修改,从而可以缩短对界面进行修改的修改周期。
附图说明
图1为本申请实施例提供的一种信息处理系统;
图2为本申请实施例提供的信息处理方法的可选地流程示意图;
图3为本申请实施例提供的控件的可选地示意图;
图4为本申请实施例提供的目标界面的可选地示意图;
图5为本申请实施例提供的信息处理方法的可选地流程示意图;
图6为本申请实施例提供的信息处理方法的可选地流程示意图;
图7为本申请实施例提供的信息处理方法的可选地流程示意图;
图8为本申请实施例提供的信息处理装置的可选地结构示意图;
图9为本申请实施例提供的信息处理装置的可选地结构示意图;
图10为本申请实施例提供的电子设备的可选地结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
本申请实施例可提供一种信息处理方法及装置、设备(例如电子设备)和存储介质(例如计算机可读存储介质)。实际应用中,信息处理方法可利用信息处理装置实现。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本申请实施例的信息处理方法可应用于图1所示的信息处理系统100,如图1所示,该信息处理系统100包括服务器10和客户端20。其中,服务器10和客户端20之间通过网络30进行通信。
服务器10对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改,得到修改后的嵌套关系表后,通过网络30将修改后的嵌套关系表发送至客户端20,客户端20在接收到修改后的嵌套关系表后,可以基于该修改后的嵌套关系表,呈现修改后的目标界面。
下面,结合图1所示的信息处理系统的示意图,对本申请实施例提供的信息处理方法、装置、设备和存储介质的各实施例进行说明。
图2为本申请实施例提供的一种信息处理方法的实现流程示意图,该方法应用于作为服务器的信息处理装置,如图2所示,该方法可以包括如下步骤:
S201、服务器接收用户对目标界面的修改操作。
这里,目标界面可以包括:一个或多个容器,一个容器可以包括:一个或多个控件。
容器可以包括:水平容器和垂直容器,其中,水平容器为包括至少两个水平设置的控件的容器,垂直容器为包括至少两个垂直设置的控件的容器。控件可以包括:图片控件和文本控件,其中,图片控件用于展示一个图片,文本控件用于展示一个文本。
在一示例中,如图3所示,容器包括:水平容器301和垂直容器302,控件包括:图片控件303和文本控件304,其中,在水平容器301中,水平设置有两个图片控件303,在垂直容器302中,垂直设置有两个文本控件304。
本申请实施例中,服务器可以包括:界面配置系统,其中,界面配置系统用于目标界面的配置,其中,目标界面的配置可以包括:对目标界面中的控件的配置。
在一些实施例中,目标界面的配置还可以包括:对目标界面中的容器进行配置,在对容器进行配置后,可以对包括在容器中的控件进行配置。
在一示例中,如图4所示,目标界面400包括垂直容器401,在该垂直容器401中嵌套有水平容器402和水平容器403,在水平容器402中嵌套有图片控件402a和文本控件402b,在水平容器403中嵌套有垂直容器404和垂直容器405,在垂直容器404中嵌套有图片控件404a和文本控件404b,在垂直容器405中嵌套有图片控件405a和文本控件405b。
S202、服务器确定所述修改操作针对的待修改控件的控件ID。
这里,所述待修改控件为所述目标界面中的控件。
在实际应用中,如果用户需要对目标界面中的控件A进行修改,那么用户会对该控件A进行修改操作,此时,服务器会接收到用户的修改操作,并根据该修改操作,确定用户的修改操作针对的待修改控件是控件A,进而可以确定该控件A的控件ID。
这里,控件ID用于指示是目标界面中的哪个控件,服务器可以根据控件ID,确定与该控件ID对应的目标界面中的控件。
服务器在确定用户的修改操作针对的待修改控件后,可以确定该待修改控件的控件ID。
服务器在确定待修改控件的控件ID后,可以根据目标界面中的容器的容器ID,确定待修改控件包括在哪个容器中。其中,容器ID用于指示是目标界面中的哪个容器。服务器可以根据容器ID,确定与该容器ID对应的目标界面中的容器。
在一示例中,如图4所示,图片控件402a的控件ID为20001,文本控件402b的控件ID为20002,图片控件404a的控件ID为20003,文本控件404b的控件ID为20004,图片控件405a的控件ID为20005,文本控件405b的控件ID为20006;垂直容器401的容器ID为101,水平容器402的容器ID为1001,水平容器403的容器ID为1002,垂直容器404的容器ID为10001,垂直容器405的容器ID为10002。
S203、服务器对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表。
这里,目标界面对应的嵌套关系表,包括:目标界面中的所有控件ID下的数据,其中,控件ID下的数据,包括:控件的渲染顺序、布局数据和控件内容。
控件的布局数据,包括:控件的位置和控件的尺寸等表征控件的布局的信息,其中,控件的尺寸可以包括:控件的宽和控件的高。
在一示例中,以图4中的图片控件402a为例,该图片控件的宽为20,高为20,渲染顺序为3。
控件的控件内容,包括表征控件中需要展示的内容的信息,比如:图片的地址、文本内容。
在一示例中,在控件为图片控件的情况下,以图4中的图片控件402a为例,该图片控件402a的控件内容为该图片控件的地址,例如,heep://***.jpg;在控件为文本控件的情况下,以图4中的文本控件402b为例,该文本控件的控件内容为“这是文本”。
本申请实施例中,修改操作用于对待修改控件的布局数据和控件内容中的一种或两种进行修改。
本申请实施例中,目标界面对应的嵌套关系表还可以包括:目标界面中的所有容器ID下的数据,其中,容器ID下的数据,包括:容器ID,容器类型、容器的渲染顺序、容器的宽、容器的高和容器的圆角。
在一示例中,以图4中的容器401为例,该容器的容器ID为101,容器的类型为垂直,容器的渲染顺序为1,容器的宽为200,容器的高为180,容器的圆角为10。
S204、服务器将所述修改后的嵌套关系表发送至客户端。
这里,服务器将修改后的嵌套关系表发送至客户端,从而在客户端中可以展示修改后的界面。
本申请实施例提供的一种信息处理方法,服务器接收用户对目标界面的修改操作,确定所述修改操作针对的待修改控件的控件ID;所述待修改控件为所述目标界面中的控件;对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表;将所述修改后的嵌套关系表发送至客户端。这样,在对界面进行修改的过程中,只需确定目标界面中的待修改控件的控件ID,并对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改即可,避免对整个模板文件进行修改,从而可以缩短对界面进行修改的修改周期。
在一些实施例中,所述信息处理方法还包括:
服务器确定所述修改操作针对所述待修改控件的修改数据。
这里,修改数据,包括:布局数据和控件内容中的一种或两种。
服务器判断所述修改数据的类型;
这里,修改数据的类型包括:第一类型和第二类型,其中,第一类型的修改数据为布局数据,第二类型的修改数据为控件内容。
如果用户对待修改控件的尺寸进行了修改,那么服务器可以确定用户的修改操作针对的待修改控件的修改数据为待修改控件的布局数据;如果用户对待修改控件的内容进行了修改,那么服务器可以确定用户的修改操作针对的待修改控件的修改数据为待修改控件的控件内容。
服务器根据所述修改数据的类型,确定包括所述控件ID的嵌套关系表。
这里,修改数据的类型不同,服务器确定的包括控件ID的嵌套关系表不同。
如果是对控件的布局数据进行了修改,那么服务器只需要修改与布局数据对应的嵌套关系表即可,而不需要对该目标页面关联的所有的嵌套关系表进行修改;同样的,如果是对控件的控件内容进行了修改,那么服务器只需要修改与控件内容对应的嵌套关系表即可,而不需要对该目标页面关联的所有的嵌套关系表进行修改。这样,可以实现控件的布局数据修改和控件内容修改的解耦。
在一些实施例中,所述根据所述修改数据的类型,确定包括所述控件ID的嵌套关系表,包括:
如果所述修改数据的类型包括第一类型,确定包括所述控件ID的第一嵌套关系表;所述第一类型的修改数据为布局数据。
这里,如果修改数据的类型包括布局数据,那么服务器可以从包括控件ID的布局数据和控件内容的嵌套关系表中确定第一嵌套关系表,该第一嵌套关系表中包括的数据为控件ID下的布局数据。
在一示例中,图片控件的控件ID为20001,该控件ID下的数据包括:布局数据和控件内容,如果服务器对控件的布局数据,例如,控件的尺寸进行了修改,那么可以确定修改数据的类型为第一类型,从而可以从包括控件ID的布局数据和控件内容的嵌套关系表中确定第一嵌套关系表,其中,该第一嵌套关系表中只包括控件ID的布局数据,不包括控件ID的控件内容。
对应的,上述S203包括:
根据所述布局数据,对所述目标界面对应的第一嵌套关系表中所述控件ID下的数据进行修改,得到修改后的第一嵌套关系表。
这里,如果是对布局数据进行修改,那么服务器在确定了第一嵌套关系表后,可以对该第一嵌套关系表中的控件ID下的数据进行修改,得到修改后的第一嵌套关系表。
在一些实施例中,服务器在得到修改后的第一嵌套关系表后,可以通过布局接口,将该修改后的第一嵌套关系表发送至客户端。
在一些实施例中,所述根据所述修改数据的类型,确定包括所述控件ID的嵌套关系表,包括:
如果所述修改数据的类型包括第二类型,确定包括所述控件ID的第二嵌套关系表;所述第二类型的修改数据为控件内容;
这里,如果修改数据的类型包括控件内容,那么服务器可以从包括控件ID的布局数据和控件内容的嵌套关系表中确定第二嵌套关系表,该第二嵌套关系表中包括的数据为控件ID下的控件内容。
在一示例中,文本控件的控件ID为20002,该控件ID下的数据包括:控件的布局数据和控件的控件内容,如果服务器对控件的控件内容,例如,控件的内容进行了修改,那么可以确定修改数据的类型为控第二类型,从而可以从包括控件ID的的布局数据和控件内容的嵌套关系表中确定第二嵌套关系表,其中,该第二嵌套关系表中只包括控件ID的控件内容,不包括控件ID的布局数据。
对应的,上述S203包括:
根据所述控件内容,对所述目标界面对应的第二嵌套关系表中所述控件ID下的数据进行修改,得到修改后的第二嵌套关系表。
这里,如果是对控件内容进行修改,那么服务器在确定了第二嵌套关系表后,可以对该第二嵌套关系表中的控件ID下的数据进行修改,得到修改后的第二嵌套关系表。
在一些实施例中,服务器在得到修改后的第二嵌套关系表后,可以通过内容接口,将该修改后的第二嵌套关系表发送至客户端。
在一些实施例中,所述信息处理方法还包括:
服务器接收针对所述目标界面中各控件的配置;所述配置包括:布局配置和内容配置;
本申请实施例中,服务器还可以包括:动态化服务器,其中,动态化服务器用于对目标界面中的各控件进行布局配置和内容配置。
布局配置为对目标界面中的各图片控件的背景色、圆角、尺寸、坐标等进行设置,对目标界面中的各文本控件的文本颜色和文本大小等进行设置。
内容配置为对目标界面中各图片控件的图片地址和各文本控件的文本内容。
服务器基于所述布局配置得到第一嵌套关系表。
这里,服务器基于布局配置中包括的数据,得到第一嵌套关系表。
服务器基于所述内容配置得到第二嵌套关系表。
这里,服务器基于内容配置中包括的数据,得到第二嵌套关系表。
服务器将所述第一嵌套关系表和所述第二嵌套关系表发送至所述客户端;所述第一嵌套关系表和所述第二嵌套关系表用于所述客户端用于显示所述目标界面。
这里,服务器在确定了包括布局配置的第一嵌套关系表和包括内容配置的第二嵌套关系表后,将该第一嵌套关系表和该第二嵌套关系表发送至客户端,客户端在接收到该第一嵌套关系表和该第二嵌套关系表后,可以显示目标界面。
图5为本申请实施例的一种信息处理方法的实现流程示意图,该方法应用于作为客户端的信息处理装置,如图5所示,该方法可以包括如下步骤:
S501、客户端接收修改后的嵌套关系表。
所述修改后的嵌套关系表是对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改得到的。
S502、客户端基于所述修改后的嵌套关系表,呈现修改后的目标界面。
所述修改后的目标界面中的所述待修改控件相对于所述目标界面中所述待修改控件存在变化。
这里,客户端在接收到修改后的嵌套关系表后,可以通过客户端中的软件开发工具包(Software Development Kit,SDK),对该修改后的嵌套关系表中的布局数据进行解析,完成界面的初始化,对该修改后的嵌套关系表中的内容数据进行解析,完成界面的内容更新。
其中,在对界面的初始化的过程中,客户端可以对容器和控件进行渲染,其中,在进行渲染的过程中,可以先对根容器进行渲染,再依次对嵌套在根容器中的子容器和控件进行渲染。
在进行界面的内容更新的过程中,客户端可以利用接收到的控件的新的控件内容,替代控件的原有的控件内容。
在一些实施例中,所述信息处理方法还包括:
客户端判断所述修改后的嵌套关系表的类型;
当所述修改后的嵌套关系表的类型包括第一类型时,客户端接收修改后的第一嵌套关系表;所述第一类型的修改数据为布局数据;
当所述修改后的嵌套关系表的类型包括第二类型时,客户端接收修改后的第二嵌套关系表;所述第二类型的修改数据为控件内容。
这里,当客户端接收到修改后的第一嵌套关系表后,客户端可以对该第一嵌套关系表中的布局数据进行解析,得到目标界面的布局配置;当客户端接收到修改后的第二嵌套关系表后,客户端可以对该第二嵌套关系表中的控件内容进行更新,得到目标界面的控件内容。
在一些实施例中,所述信息处理方法还包括:
客户端接收基于布局配置得到的第一嵌套关系表和基于内容配置得到的第二嵌套关系表;
这里,客户端接收服务器发送的基于布局配置得到的第一嵌套关系表和服务器发送的基于内容配置得到的第二嵌套关系表后,可以对该第一嵌套关系表进行解析,得到目标界面中各控件的背景色、尺寸和位置等信息,并根据该第二嵌套关系表,对目标界面中的各控件的图片内容和文本内容进行更新。
客户端根据所述第一嵌套关系表和所述第二嵌套关系表的接收顺序,显示所述目标界面。
在一些实施例中,所述客户端根据所述第一嵌套关系表和所述第二嵌套关系表的接收顺序,显示所述目标界面,包括:
在先接收到所述第一嵌套关系表,后接收到所述第二嵌套关系表的情况下,先显示目标界面中各控件的布局配置,再加载目标界面中各控件的内容配置;
在先接收到所述第二嵌套关系表,后接收到所述第一嵌套关系表的情况下,同时显示目标界面中各控件的布局配置和内容配置。
本申请实施例中,如果客户端先接收到了第一嵌套关系表,后接收到了第二嵌套关系表,那么客户端在接收到了第一嵌套关系表后,可以先通过布局初始化模块,对目标界面进行初始化,在接收到了第二嵌套关系表后,对目标界面中的各控件进行赋值。其中,对目标界面进行初始化为对目标界面中的各控件进行布局配置,此时,目标界面中的各控件是没有控件内容的,在对目标界面中的各控件进行布局配置后,客户端对目标界面中的各控件进行赋值,在赋值后,目标界面中的各控件才有控件内容。
其中,在对界面进行初始化的过程中,可以对容器和控件进行渲染,从而完成对界面的初始化。其中,在对容器进行渲染的过程中,初始化模块可以先找到根容器,对该根容器进行渲染,再找到嵌套在该根容器中的子容器,对该子容器进行渲染,然后再从外向内一层层递归渲染即可。在对控件进行渲染的过程中,可以先找到嵌套在根容器下的控件,对该嵌套在根容器下的控件进行渲染,再找到嵌套在子容器下的控件进行渲染,对该嵌套在子容器下的控件进行渲染,对于嵌套在一个控件下的子控件,可以先对外层的控件进行渲染,再对嵌套在控件下的子控件进行渲染。
客户端在接收到了第二嵌套关系表后,可以根据接收到的第二嵌套关系表,对界面内容进行赋值,例如,若是图片控件,则在该图片控件的位置上设置一个图片,若是文本控件,则在该文本控件的位置上设置一段文本。
在对界面进行初始化的过程中,对于图片控件,只是预留了空白区域或显示了默认占位图,对于文本控件,只是预留了文本展示区域,并没有显示任何文本,因此,在对界面进行初始化后,还需要得界面的内容进行更新,从而完成最终的界面展示。
本申请实施例中,如果客户端先接收到了第二嵌套关系表,后接收到了第一嵌套关系表,那么客户端会在接收到了第一嵌套关系表后,通过数据解析模块,将布局数据和控件内容进行整合,将该第一嵌套关系表和第二嵌套关系表整合到一个中,完成对界面的初始化和对界面内容进行赋值。
在一些实施例中,如果客户端接收到了第一嵌套关系表,而未接收到第二嵌套关系表,或者是,客户端接收到了第二嵌套关系表,而未接收到第一嵌套关系表,那么客户端会启动重试机制,重新对服务器发送的嵌套关系表进行接收。其中,一般的重试次数为2次,如果重试过程中数据被正确获取到,就会遵循数据获取到的先后顺序执行信息处理方法。如果重试次数用完,数据加载还是失败,那么页面将从加载提示状态转为页面加载异常提示状态。
在一些实施例中,如图6所示,客户端在接收的服务器发送的修改后的嵌套关系表后,客户端执行如下步骤:
S601、开始目标界面渲染和更新。
S602、启动接口请求。
其中,上述S602包括:
S602a、启动布局接口请求。
S602b、启动内容接口请求。
S602a1、判断布局数据是否加载正常。
若加载正常,则执行S602a2;若加载不正常,则启动重试机制并执行S603,其中,S603为判断重试次数是否大于2次。
S602a2、对布局数据进行解析。
S602a3、判断是否有内容数据。
若有内容数据,则执行S602b2;若没有内容数据,则执行S602a4。其中,S602b2为对内容数据进行解析。
S602a4、初始化根容器。
S602a5、初始化子容器。
S602a6、初始化子控件。
在执行上述S602a5后,执行S602a7,该S602a7为判断子容器中是否有子容器,若有子容器,则重新执行S602a5和S602a6;若没有子容器,则执行S602a8。
S602a8、界面初始化完成。
S602a9、判断控件是否已展示内容。
若已展示内容,则执行S605;若未展示内容,则执行S602b9。其中,S605为结束界面渲染和更新,S602b9为判断是否有内容数据。
在执行上述S602b后,执行下述S602b1。
S602b1、判断控件内容是否加载正常。
若加载正常,则执行S602b2;若加载不正常,则启动重试机制并执行S603。
S602b2、对内容数据进行解析。
S602b3、判断是否有布局数据。
若有布局数据,则执行S602b4;若没有布局数据,则执行S602c。
S602b4、整合布局数据和控件内容。
S602c、判断目标界面是否已初始化。若已经初始化,则执行S602b5。
S602b5、确定根容器。
S602b6、确定子容器。
S602b7、更新子控件。
在执行上述S602b6后,执行S602b8,该S602b8为判断子容器中是否有子容器。若有子容器,则重新执行上述S602b6和S602b7;若没有子容器,则执行下述S604。
S604、目标界面更新完成。
本申请实施例提供的信息处理方法,如图7所示,包括:
S701、服务器接收用户对目标界面的修改操作。
S702、服务器确定所述修改操作针对的待修改控件的控件ID。
S703、服务器对对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表。
S704、服务器将所述修改后的嵌套关系表发送至客户端。
S705、客户端接收所述修改后的嵌套关系表。
S706、客户端基于所述修改后的嵌套关系表,呈现修改后的目标界面。
其中,对于S701的描述,请参见上述实施例中对于S201的描述;对于S702的描述,请参见上述实施例中S201的描述;对于S703的描述,请参见上述实施例中对S203的描述;对于S704的描述,请参见上述实施例中对于S204的描述;对于S705的描述,请参见上述实施例中对于S501的描述;对于S706的描述,请参见上述实施例中对于S502的描述。
本申请提供的信息处理系统包括三个模块,分别是界面配置平台、动态化服务和移动客户端。界面配置平台是动态布局界面的可视化编辑场所,主要完成布局配置和内容配置,然后通过控件id将布局和内容数据进行关联绑定。动态化服务提供两种数据服务,分别是布局数据服务和内容数据服务,它将配置平台发布的布局信息和内容信息分别进行格式化处理,最终通过布局接口和内容接口以JSON格式下发到移动端。移动端是展示动态布局的最终场所,从服务端的布局接口获取到布局数据后,内嵌在移动端的动态化SDK进行数据解析,然后从外到内逐步完成容器控件及其子控件的初始化渲染工作,最后将内容接口获取到的内容数据更新到刚刚初始化的控件上,完成整个动态界面的展示。
完成动态布局容器嵌套关系、位置、大小属性配置后,还可以根据需求设置控件圆角、颜色、尺寸及内外边距等布局属性,这些属性将在发布时一起上传到动态化服务进行布局数据处理。
接下来是内容数据配置,这一步相对简单,主要是对上述动态界面中的图片控件和文本控件进行赋值,为图片控件设置图片地址,为文本控件设置文本内容。
本方案主要思想是动态布局数据与内容数据解耦,两者之间通过控件id建立起对应关系,在配置平台完成界面配置后点击发布,布局数据和内容数据将分别上传到动态化服务端。服务端将上传过来的布局数据和内容数据分别进行格式化处理,并保持两者相同的嵌套关系,如下图四所示,最终生成标准的JSON数据下发给移动客户端。
移动客户端启动数据请求模块开始请求数据,界面展示加载loading状态,随后通过布局接口下发的布局数据完成界面布局初始化,通过内容接口下发的内容数据完成内容展示(界面更新)。由于数据被解耦成了两个接口,所以存在数据先来后到以及加载失败的问题,主要分为以下四种情况:
1、布局数据先到,内容数据后到;
2、布局数据先到,内容数据加载失败;
3、内容数据先到,布局数据后到;
4、内容数据先到,布局数据加载失败;
1和3是两种正常的数据接收情况,但是它们的处理方式有较大的区别,先介绍1布局数据先到内容数据后到的情况。在这种情况下客户端获取到布局数据后,为充分利用内容数据加载的等待时间,随即启动布局初始化模块,由于布局数据被设计成了模拟真实布局的嵌套结构,所以在初始化界面布局时,初始化模块只需先找到根容器,然后从外向内一层层递归渲染即可,每一层子控件会按照在配置平台设定好的渲染顺序进行有序渲染,当子容器中有子容器,那么将子容器节点后的所有布局数据作为参数再传递给渲染模块,完成子容器内子子控件的渲染。就这样一层层递归下去,直至所有叶子节点的控件完成渲染,这样界面布局的初始化就完成了。
但是到这一步还没有结束,为了界面能展示丰富的内容,需要用后获取到的内容数据进行界面更新。初始化各控件时只是使用了默认数据进行展示,像图片控件只是预留了空白区域或显示了默认占位图,文本控件只是预留了文本展示区域,并没有显示任何文本。上面介绍过,内容数据和布局数据是解耦的,它们仅仅通过控件id建立起联系,为了达到类似初始化布局时由外向内一层层递归的方式更新界面内容的目的,内容数据也被设计成了模拟真实布局的嵌套结构。在更新控件展示内容时,更新模块也是先找到根容器,然后通过id检索子控件内容数据,为已初始化的子控件完成赋值,有子容器的情况,就将子容器节点后的所有内容数据作为参数再传递给更新模块完成子容器内子子控件的赋值。这样,客户端在执行布局和内容双递归流程后,移除loading状态就完成了整个界面的展示工作。
下面再介绍下3内容数据先到布局数据后到的情况,在这样情况下,由于布局数据还没有获取到,所以界面继续展示loading状态,初始化模块会等待布局数据的到来。虽然内容数据已获取到,但是界面并没有被初始化,更新模块也不会启动更新流程。等到布局数据来到后,数据解析模块会把布局数据和内容数据进行整合,按照原有的嵌套关系整合到一个带布局和内容数据的结构中。简单说就是将上图四中的两部分数据合二为一,相当是给布局数据里加入了内容数据,如下图五所示,这样能将原先两次嵌套递归流程合并为一次。
接下来处理流程就跟情况1中界面初始化一致了,情况1中初始化时布局数据里是没有内容数据的,现在有内容数据后,就可以在初始化各控件的同时完成控件的赋值工作。最终移除loading状态,展示动态渲染出来的界面。
2和4是两种数据获取异常的情况,在本方案中数据获取异常时会有重试机制,无论是布局接口还是内容接口数据获取失败的情况,都会启动重试机制,一般设定重试次数为2次,如果重试过程中数据被正确获取到,就会遵循数据获取到的先后顺序执行上述1或3的渲染流程。如果重试次数用完,数据加载还是失败,那么页面将从loading提示状态转为页面加载异常提示状态。
客户端完整的动态界面渲染流程如图6所示:
后续如果界面布局未发生改变,但内容发生了变化,服务端在客户端刷新界面拉取数据时通过客户端传入的接口入参决定是否仅下发内容数据,该入参会指示服务端,客户端本次数据请求仅仅是内容刷新还是界面初始化渲染。如果是后者,那么客户端将执行整个动态界面渲染过程;如果是前者,客户端两个接口中,只有内容接口会获取到数据,布局接口除了返回告知客户端布局数据未变化的状态字段外,不会带有任何布局数据。拿到刷新的内容数据并解析后,客户端将完成一次内容更新的递归流程。
图8为本申请实施例的提供的一种信息处理装置,应用于服务器,如图8所示,该信息处理装置800包括:
第一接收单元801,用于接收用户对目标界面的修改操作;
确定单元802,用于确定所述修改操作针对的待修改控件的控件ID;所述待修改控件为所述目标界面中的控件;
修改单元803,用于对所述目标界面对应的嵌套关系表中所述控件ID下的数据进行修改,得到修改后的嵌套关系表;
发送单元804,用于将所述修改后的嵌套关系表发送至客户端。
在一些实施例中,装置800还包括:判断单元;
所述确定单元802,还用于确定所述修改操作针对所述待修改控件的修改数据;判断单元,用于判断所述修改数据的类型;确定单元802,还用于根据所述修改数据的类型,确定包括所述控件ID的嵌套关系表。
在一些实施例中,确定单元802,还用于如果所述修改数据的类型包括第一类型,确定包括所述控件ID的第一嵌套关系表;所述第一类型的修改数据为布局数据;对应的,修改单元803,还用于根据所述布局数据,对所述目标界面对应的第一嵌套关系表中所述控件ID下的数据进行修改,得到修改后的第一嵌套关系表。
在一些实施例中,确定单元802,还用于如果所述修改数据的类型包括第二类型,确定包括所述控件ID的第二嵌套关系表;所述第二类型的修改数据为控件内容;对应的,修改单元803,还用于根据所述控件内容,对所述目标界面对应的第二嵌套关系表中所述控件ID下的数据进行修改,得到修改后的第二嵌套关系表。
在一些实施例中,装置800还包括:获取单元;
第一接收单元801,还用于接收针对所述目标界面中各控件的配置;所述配置包括:布局配置和内容配置;
所述获取单元,用于基于所述布局配置得到第一嵌套关系表;还用于基于所述内容配置得到第二嵌套关系表;
发送单元804,还用于将所述第一嵌套关系表和所述第二嵌套关系表发送至所述客户端;所述第一嵌套关系表和所述第二嵌套关系表用于所述客户端显示所述目标界面。
图9为本申请实施例的提供的一种信息处理装置,应用于客户端,如图9所示,该信息处理装置900包括:
第二接收单元901,用于接收修改后的嵌套关系表;所述修改后的嵌套关系表是对目标界面对应的嵌套关系表中待修改控件的控件ID下的数据进行修改得到的;
显示单元902,用于基于所述修改后的嵌套关系表,呈现修改后的目标界面;所述修改后的目标界面中的所述待修改控件相对于所述目标界面中所述待修改控件存在变化。
在一些实施例中,装置900还包括:判断单元,所述判断单元,用于判断所述修改后的嵌套关系表的类型;
所述第二接收单元901,还用于当所述修改后的嵌套关系表的类型包括第一类型的修改数据时,接收修改后的第一嵌套关系表;所述第一类型的修改数据为布局数据;
所述第二接收单元901,还用于当所述修改后的嵌套关系表的类型包括第二类型的修改数据时,接收修改后的第二嵌套关系表;所述第二类型的修改数据为控件内容。
在一些实施例中,第二接收单元901,还用于接收基于布局配置得到的第一嵌套关系表和基于内容配置得到的第二嵌套关系表;
所述显示单元902,还用于根据所述第一嵌套关系表和所述第二嵌套关系表的接收顺序,显示所述目标界面。
在一些实施例中,显示单元902,还用于在先接收到所述第一嵌套关系表,后接收到所述第二嵌套关系表的情况下,先显示目标界面中各控件的布局配置,再显示目标界面中各控件的内容配置;
所述显示单元902,还用于在先接收到所述第二嵌套关系表,后接收到所述第一嵌套关系表的情况下,同时显示目标界面中各控件的布局配置和内容配置。
本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的信息处理方法中的步骤。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现上述任一实施例所述的信息处理方法。
这里需要指出的是:以上对于电子和计算机可读存储介质的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例提供的信息处理装置所包括的各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Micro ProcessorUnit)、数字信号处理器(DSP,Digital Signal Processor)或现场可编程门阵列(FPGA,Field-Programmable Gate Array)等。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的信息处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
需要说明的是,图10为本申请实施例电子设备的一种硬件实体示意图,如图10所示,所述电子设备1000包括:一个处理器1001、至少一个通信总线1002、至少一个外部通信接口1004和存储器1005。其中,通信总线1002配置为实现这些组件之间的连接通信。在一示例中,电子设备1000还包括:用户接口1003、其中,用户接口1003可以包括显示屏,外部通信接口1004可以包括标准的有线接口和无线接口。
存储器1005配置为存储由处理器1001可执行的指令和应用,还可以缓存待处理器1001以及电子设备中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。