视图更新方法、装置、设备及存储介质
文献发布时间:2023-06-19 10:19:37
技术领域
本发明涉及视图技术领域,尤其涉及视图更新方法、装置、设备及存储介质。
背景技术
在相关技术中,由于操作系统中的一个视图不能被同时添加到多个业务上,所以当一个业务需要添加已经添加在其他业务的视图时,需要将该视图从其他业务中先去掉,才能将该视图添加到该业务上;但对于多个独立业务而言,因为业务之间并不了解其他业务逻辑,如果业务A首先添加了某一视图,业务B添加该某一视图时需将该某一视图从业务A取掉;当再次回到业务A时,由于业务A并不知道该某一视图已经被取掉,从而造成显示或运行逻辑出错。
发明内容
本发明实施例提供一种视图更新方法、装置、设备及存储介质,能够通过将已添加在其他业务中的目标视图添加在多个不同的业务中,提高了不同业务之间的一致性和视图显示的正确率。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种视图更新方法,包括:
获取目标业务发送的视图添加请求;
确定所述视图添加请求对应的目标视图;
如果所述目标视图已经添加在其他业务上,确定所述目标视图的状态信息;
根据所述目标视图的状态信息,创建代理视图;
将所述代理视图,添加在所述目标业务上。
第二方面,本发明实施例提供一种视图更新装置,包括:
第一获取模块,用于获取目标业务发送的视图添加请求;
第一确定模块,用于确定所述视图添加请求对应的目标视图;
第二确定模块,用于如果所述目标视图已经添加在其他业务上,确定所述目标视图的状态信息;
第一创建模块,用于根据所述目标视图的状态信息,创建代理视图;
第一添加模块,用于将所述代理视图,添加在所述目标业务上。
第三方面,本发明实施例提供一种视图更新的设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现上述视图更新方法。
第四方面,本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的视图更新方法。
本发明实施例具有以下有益效果:首先,获取目标业务发送的视图添加请求;确定所述视图添加请求对应的目标视图;然后,如果所述目标视图已经添加在其他业务上,确定所述目标视图的状态信息;根据所述目标视图的状态信息,创建代理视图;最后,将所述代理视图,添加在所述目标业务上。如此,当获取到目标业务需要添加一个视图的视图添加请求时,将基于目标视图的状态信息创建的代理视图,添加在目标业务中,从而实现了将已添加在其他业务中的目标视图添加在多个不同的业务中,提高了不同业务之间的一致性和视图显示的正确率。
附图说明
图1是本发明实施例提供的视图更新系统的一个可选的架构示意图;
图2是本发明实施例提供的视图更新的系统的结构示意图;
图3A是本发明实施例提供的视图更新方法的实现流程示意图;
图3B是本发明实施例提供的视图更新方法的另一实现流程示意图;
图4是本发明实施例提供的视图更新方法的又一实现流程示意图;
图5A是本发明实施例视图更新方法的应用场景示意图;
图5B是本发明实施例实现视图更新方法的逻辑结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)视图(view),是操作系统中所有控件的基类,不管是简单的文本视图(Textview),按钮(Button)还是复杂的线性排版(Linear Layout)和列表视图(List view),其共同基类都是视图;视图是一种界面层的控件的一种抽象,代表了一个控件
2)视图的主要状态包括:按下状态、非按下状态、焦点聚集状态、非焦点聚集状态、选中状态、非选中状态、激活状态、非激活状态、可以勾选状态、不可以勾选、被勾选状态和未被勾选状态。
3)单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例;
4)单例视图,单例模式的工具类视图,需要同时提供类方法和对象方法,以便作为接口供他人使用,既然是单例模式,自然整个类中只有一个对象,只返回同一个对象,对对象进行显示和移除操作时,操作的都是同一个对象,在不同方法中都可以通过单例拿到同一个对象。
5)挂载(mounting),是指由操作系统使一个存储设备(诸如硬盘或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。一般来说,当计算机关机时,每个已挂载存储都将经历一次卸载,以确保所有排队的数据被写入,并保证介质上文件系统结构的完整性。
在相关技术中,操作系统不允许一个视图被添加到多个业务上,所以从一个业务视图需要挂载某一视图,需要将视图在之前所属的业务中先去掉,才能添加到当前的业务上,但对于多个独立业务而言,因为业务之间并不了解其他业务逻辑,如果业务A首先添加了视图,业务B添加视图时需将单例视图从业务A取掉,当再次回到业务A时,有可能A并不知道视图已经被取掉,从而造成显示或运行逻辑出错。
针对上述技术问题,本发明实施例提供一种视图更新方法、终端及存储介质,通过当业务需要复用一个目标视图时,根据该需要复用的目标视图创建一个代理视图,将该代理视图添加在该业务中,从而实现了将同一个状态的视图添加在多个不同的视图中。
下面说明本发明实施例提供的视图更新的设备的示例性应用,本发明实施例提供的设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施为终端或服务器时示例性应用。
参见图1,图1是本发明实施例提供的视图更新系统的一个可选的架构示意图,为实现支撑一个示例性应用,首先,当接收到业务A 11发送的请求添加视图的视图添加请求时,基于该视图添加请求,确定待添加的目标视图101;然后,基于目标视图101的标识信息,确定该目标视图101是否已经添加在业务B 12中;如果该目标视图101已经添加在业务B 12中,将该视图添加请求发送给业务A11中的第一虚拟视图控件102中,采用第一虚拟视图控件102,基于目标视图101的状态信息,创建与该状态信息相同的代理视图103;这样,通过创建一个虚拟视图,当业务需要复用一个实体视图时,虚拟视图根据该实体视图创建一个代理视图,将该代理视图添加在该业务中,从而实现了将同一个状态的视图添加在多个不同的业务中。
参见图2,图2是本发明实施例提供的视图更新的系统的结构示意图,图2所示的终端400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,在一些示例中键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件终端包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储终端。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory,R OM),易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。本发明实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算终端,示例性的网络接口420包括:蓝牙、无线相容性认证、和通用串行总线(UniversalSerial Bus,USB)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围终端和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器450中的视图更新的服务器455,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块4551、第一确定模块4552、第二确定模块4553、第一创建模块4554和第一添加模块4555;这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的装置可以采用硬件方式实现,作为示例,本发明实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的视图更新方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(Application Specific Integ rated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,P LD)、复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他电子元件。
将结合本发明实施例提供的终端的示例性应用和实施,说明本发明实施例提供的视图更新方法。
参见图3A,图3A是本发明实施例提供的视图更新方法的实现流程示意图,结合图3A示出的步骤进行说明。
步骤S301,获取目标业务发送的视图添加请求。
在一些实施例中,所述目标业务可以是任意一种业务,比如,某一种应用程序。所述视图添加请求,为目标业务发送的请求添加视图的视图添加请求。
步骤S302,确定所述视图添加请求对应的目标视图。
在一些实施例中,即确定目标业务请求添加的目标视图。
步骤S303,如果所述目标视图已经添加在其他业务上,确定所述目标视图的状态信息。
在一些实施例中,首先,确定所述视图添加请求对应的目标视图的标识;然后,如果根据所述目标视图的标识确定所述目标视图已经添加在其他业务上时,确定所述目标视图的状态信息;所述状态信息至少包括:按下状态、非按下状态、焦点聚集状态、非焦点聚集状态、选中状态、非选中状态、激活状态、非激活状态、可以勾选状态、不可以勾选、被勾选状态或未被勾选状态等。
步骤S304,根据所述目标视图的状态信息,创建代理视图。
在一些实施例中,基于目标视图的状态信息,确定待创建的代理视图的状态信息,以使代理视图的状态信息与目标视图的代理信息相匹配。所述代理视图可以理解为是能够实现与目标视图相同功能,且具有与目标视图状态信息相匹配的状态信息的新创建的视图。
步骤S305,将所述代理视图,添加在所述目标业务上。
在一些实施例中,由于目标视图已经添加在其他业务上,所以基于目标视图的状态信息,创建一个代理视图,将该代理视图添加在该目标业务上,以实现与目标视图相同的功能;这样,状态匹配的视图能够被不同的业务复用,且无需进行额外操作,使用方便简洁。
在本发明实施例中,当获取到业务需要复用一个视图的视图添加请求时,根据该目标视图的状态信息创建代理视图,将该代理视图添加在该目标业务中,从而实现了将已添加在其他业务中的目标视图添加在多个不同的业务中,进而能够在不同进程和不同平台复用状态匹配的视图,减少了不同平台同一样式的重复开发,提升多端并行开发的效率,降低了显示或者运行逻辑出错的概率。
在一些实施例中,为了避免创建不必要的代理视图,在步骤S302之后,所述方法还包括:
如果所述目标视图当前未添加在任一业务上,将所述目标视图添加在所述目标业务上。
如果目标视图当前未添加在任一业务上时,说明目标视图当前不属于任一业务(或者说,目标视图当前未添加在任一父视图中,所述父视图可以理解为不同业务中能够添加目标视图的视图),在这种情况下,不需要创建代理视图,将目标视图添加在目标业务上,同样满足操作系统中对于状态匹配的视图对应一个业务的要求。
在一些实施例中,在每一业务中事先设定虚拟视图控件,采用虚拟视图控制器,创建与目标视图状态信息匹配的代理视图,在步骤S304之前,所述方法包括以下步骤,参见图3B,图3B是本发明实施例提供的视图更新方法的另一实现流程示意图,结合图3A进行说明:
步骤S321,将所述目标视图的状态信息发送给所述目标业务中的第一虚拟视图控件。
在一些实施例中,第一虚拟视图控件为事先创建的虚拟视图对应的控件,可以理解为是用于创建代理视图的虚拟视图。
步骤S322,采用所述第一虚拟视图控件,根据所述目标视图的状态信息,创建所述代理视图。
在一个具体例子中,虚拟视图控件与代理视图一一对应。第一虚拟视图控件接收到目标视图的状态信息之后,生成与该目标视图的状态信息相匹配的代理状态信息,将该代理状态信息作为代理视图的状态信息,以创建代理视图。
在其他实施例中,当获取视图添加请求之后,将视图添加请求发送给第一虚拟视图控件;第一虚拟视图控件接收到视图添加请求之后,基于该视图添加请求确定对应的目标视图的标识;如果根据所述目标视图的标识确定所述目标视图已经添加在其他业务上时,第一虚拟视图控件确定所述目标视图的状态信息,最后,第一虚拟视图控件,根据所述目标视图的状态信息,创建所述代理视图。这样,将代理视图添加在目标业务上之后,该目标业务就能够实现目标视图所具有的功能,所以,在目标业务侧来看,是添加了目标视图,从而实现了将状态信息相同的目标视图添加在不同的业务上,进而能够在不同进程和不同平台复用状态信息匹配的视图。
在其他实施例中,为使得创建的代理视图的状态信息与目标视图的状态信息匹配,所述步骤S322可以通过以下步骤实现:
第一步,采用所述第一虚拟视图控件,确定与所述目标视图的状态信息相匹配的代理状态信息。
在一些实施例中,第一虚拟视图控件确定目标视图的状态信息之后,确定与所述目标视图的状态信息相匹配的代理状态信息;在一个具体例子中,所述代理状态信息可以理解为与目标视图的代理信息的相似度大于相似度阈值,比如,二者包含的参数相同的数量大于数量阈值,即代理状态信息包含的参数和目标视图的代理信息包含的参数相同的数量较多,或者将所述目标视图的状态信息确定为代理状态信息。
第二步,根据所述代理状态信息,创建所述代理视图。
在一些实施例中,第一虚拟视图控件,根据所述代理状态信息,创建所述代理视图。例如,将该目标视图的状态信息作为代理状态信息,基于此,创建包含该代理状态信息的代理视图。
在其他实施例中,为实现对目标业务中代理视图进行更新的同时对其他业务中的目标视图进行更新,在步骤S305之后,所述方法还包括以下步骤,参见图4,图4是本发明实施例提供的视图更新方法的又一实现流程示意图,结合图3A进行说明:
步骤S401,获取所述目标业务发送的更新所述目标视图的更新指令。
在一些实施例中,从业务侧来看,当目标业务需要对已添加的目标视图进行更新时,向该目标业务中的该目标视图对应的第一虚拟视图空间发送更新指令。
步骤S402,响应于所述更新指令,对所述目标视图对应的代理视图进行更新。
在一些实施例中,响应于所述更新指令,对所述代理视图对应的当前显示界面进行更新,比如,将更新指令发送给当前显示界面的控制器,以使该控制器基于该更新指令所需要的更新操作,对代理视图所属的当前显示界面进行重新绘制。
步骤S403,将对所述代理视图进行更新的更新信息,传递给所述第一虚拟视图控件。
在一些实施例中,将对当前界面进行更新的更新信息,传递给所述第一虚拟视图控件。比如,将对当前界面进行重新绘制的更新信息,传递给第一虚拟视图控件,以告知第一虚拟视图控件,已对代理视图进行更新。
步骤S404,采用所述第一虚拟视图控件,将所述更新信息发送给所述其他业务中的第二虚拟视图控件,以更新所述其他业务中已添加的所述目标视图。
在一些实施例中,采用所述第一虚拟视图控件,将所述更新信息携带在能够跨平台传输的跨平台更新指令中,发送给所述其他业务中的第二虚拟视图控件,以更新所述其他业务中已添加的所述目标视图。采用所述第一虚拟视图控件,基于该更新信息生成跨平台通用的跨平台更新指令,将该更新信息携带在跨平台更新指令中,发送给所述其他业务中的第二虚拟视图控件,以更新所述其他业务中已添加的所述目标视图。
所述步骤S404可以通过以下步骤实现:
第一步,采用所述第一虚拟视图控件,将所述更新信息发送给所述当前显示界面的更新同步器。
比如,采用所述第一虚拟视图控件,将所述更新信息携带于跨平台更新指令发送给所述当前显示界面的更新同步器。所述第一虚拟视图控件,将更新信息发送给所述当前显示界面的更新同步器。
第二步,采用所述更新同步器,将所述更新信息传递给所述第二虚拟视图控制器。
在一个具体例子中,采用所述更新同步器,将所述更新信息携带于跨平台更新指令传递给所述第二虚拟视图控制器。首先,确定所述目标业务和所述其他业务之间的归属关系;比如,目标业务和所述其他业务包含于同一进程、所述目标业务和所述其他业务包含于同一设备中的不同进程或目标业务和所述其他业务包含于不同的设备等;然后,在所述更新同步器中,确定与所述归属关系相匹配的传递方式;最后,采用所述与所述归属关系相匹配的传递方式,将所述更新信息传递给所述第二虚拟视图控件。比如,如果所述目标业务和所述其他业务包含于同一进程,采用所述更新同步器中的消息队列,将所述跨平台更新指令传递给所述第二虚拟视图控件;如果所述目标业务和所述其他业务包含于同一设备中的不同进程,采用所述更新同步器中的跨进程通信器,将所述跨平台更新指令传递给所述第二虚拟视图控件;如果所述目标业务和所述其他业务包含于不同的设备,采用所述更新同步器中的底层套接字,将所述跨平台更新指令传递给所述第二虚拟视图控件。
第三步,采用所述第二虚拟视图控件,根据所述更新信息,更新所述其他业务中已添加的所述目标视图。
在一些实施例中,响应于所述跨平台更新指令,采用所述第二虚拟视图控件,根据所述跨平台更新指令中携带的更新信息,更新所述其他业务中已添加的所述目标视图。第二虚拟视图控件解析跨平台更新指令,将跨平台更新指令发送给所述其他业务的显示界面的控制器,以使该控制器基于该跨平台更新指令中的更新信息,对当前显示界面进行重新绘制,以实现对于该其他业务中已经添加的目标视图的更新。
在其他实施例中,如果该其他业务不是第一个添加目标视图的业务,那么基于该跨平台更新指令中的更新信息,对该其他业务中已经添加的目标视图的代理视图进行更新;这样,实现了对于不同业务中相同状态的视图进行同步更新,从而提高了显示界面在不同场景下的一致性,减少了对用户造成的显示界面不一致的歧义。
下面,将说明本发明实施例在一个实际的应用场景中的示例性应用,以将两个状态一致的视图,添加到父视图,更新父视图中一个视图的同时,另一个视图同样进行更新为例,进行说明。
在一些实施例中,操作系统系统中同一状态的视图不能被同时添加到不同父视图(即不同业务中能够添加目标视图的视图)上,如果要实现一个视图添加到不同父视图上,可以通过以下两种方式:
方式一,通过创建两个视图分别添加到不同视图,但是这两个视图之后就会独立,不再共享同一状态。
方式二,如果想让同一视图在不同父视图上,只能保证同一时间只在一个父视图上,例如当显示父视图A时将这个视图添加上去,再显示父视图B时再将这个视图从父视图A上移除,再加到父视图B上。
但是上述两种方式都无法解决完全复用同一视图的需求。在方式一中,只能保证当前两个视图的状态一致,后面被添加到不同业务的父视图后,因为是两个独立视图了,所以更新其中一个视图,另一个业务中的该视图并不会同步更新。方式二中虽然用的是同一个视图,但是界面或界面切换时并需手动移除之前的,并加在新的视图上,这样会造成不同业务逻辑之间的耦合,同时因为业务之间无感知,可能无法做到每次使用视图时先手动移除再添加的逻辑保证,因此可能造成一些业务的视图被移除后由于未及时通知该业务,从而造成显示异常。并且,方式一和二都无法做到跨进程和平台,无法让同一个视图同时显示在不同进程或终端上。
基于此,本发明实施例提供一种视图更新方法,通过远程代理,跨进程通信以及操作系统消息队列等通信方式,使得多个不同视图可以共享一个视图,即包含同样状态信息的目标视图可以添加在不同的业务中,从而达到不同应用,不同业务甚至跨网络设备可以共用同个视图状态,解决了单例视图可以跨业务、跨应用或跨设备使用的问题。
在一个具体例子中,如图5A所示,从应用侧来看,设备A 51的应用A 511与应用B512以及设备B 52的应用C 521都共用一个目标视图D 53,则应用A 511对目标视图D 53的进行分更新操作,会同步到应用B 512和设备B 52的应用C 521,对应用B 512和应用C 521而言就像是二者在同时使用和更新目标视图D 53。
上述过程是通过一个虚拟视图控件和多个代理视图的通信实现的,在应用A,应用B与应用C上分别使用了不同的代理视图,对代理视图进行更新时会同步给虚拟视图控件,虚拟视图控件再同步分发给其他该视图的代理视图进行更新。这样,采用虚拟视图控件,每个业务在添加目标视图时会自动从虚拟视图控件上创建一个代理视图,而且不同业务挂载不同的代理视图,对代理视图进行操作更新时会通过虚拟视图控件更新到其他代理视图,从而使得不同业务添加的状态信息相同的目标视图表现出最终一致性的状态。
在本发明实施例中,开发人员只需要声明一个虚拟视图控件,并将虚拟视图控件指向一个已有存在的视图。然后,需要复用该目标视图时通过虚拟视图控件获取方法返回当前视图的代理视图,然后将代理视图挂载在不同业务方上。代码如下:
view existview=new Imageview(mContext);%已存在的view;
Virtualview virtual=Virtualview.Set VirtualCenter(existview);%将虚拟视图指向已存在的视图;
view someview=virtual.getProxy Virtual();%某个业务需要复用虚拟视图;
add view(someview);someview.add(xxx);
图5B是本发明实施例实现视图更新方法的逻辑结构图,结合图5B进行以下说明:
业务A501和业务B502分别为不同的视图业务。
在本发明实施例中,假设业务A501对虚拟视图控件进行更新操作,业务B502同步了更新操作为例进行说明。在本发明实施例中,业务A和业务B都是双向过程,即既能对其中的视图进行更新,又能将对某一个视图更新的内容同步其他业务的视图中。
首先,当业务A501对虚拟视图控件进行更新操作时,业务A501将业务操作事件(即更新指令)发送给业务A对应的代理视图503。
在一些实施例中,每个业务均有独立的虚拟视图控件,虚拟视图控件与代理视图一一对应,但对开发不可见,因此开发每次只能操作代理视图。这样就实现了同一视图可以被不同业务复用,且无需进行额外操作,使用方便简洁。每个业务复用目标视图时其实获取的是虚拟视图控件创建出来的代理视图,每个业务有自己独立的代理视图,因此不会违背操作系统框架要求一个视图只能有一个父视图的规则,可以在操作系统框架上顺利运行。
其次,代理视图503的控制器将业务操作事件对应的用户界面(User Inter face,UI)操作传给操作系统的显示界面控制器504,以使操作系统的显示界面控制器504对该视图进行更新重绘,然后将该更新操作传给代理视图503对应的虚拟视图控件505。
在一些实施例中,当业务对代理视图产生UI更新操作时,代理视图会有两个动作,一是作为普通视图,将UI操作传给Android框架,以使Android框架对该视图进行更新重绘,二是将UI操作传给虚拟视图控件。
再次,虚拟视图控件505将代理视图503的UI操作进行编码,形成跨平台通用的UI更新指令,并将通用的用户界面更新指令传递给底层的UI更新同步器506。
在一些实施例中,更新同步器506(比如,UI更新同步器),由消息队列561(比如,UI消息队列(UI Handler)),跨进程通信器562(比如,IPC Binde r通信器)以及底层套接字通信器563组成。
如果是将对于目标视图的更新,同步给与目标业务属于同一进程业务的虚拟视图控件,就采用UI消息队列561,将UI的更新指令直接传给该业务的虚拟视图控件;如果是将对于目标视图的更新,同步给与目标业务属于同一设备的不同进程的业务的虚拟视图控件,则采用跨进程通信器562,通过跨进程通信器调用技术,将UI的更新指令跨进程传给不同进程的虚拟视图控件;如果是将对于目标视图的更新,同步给与目标业务属于不同设备的业务的虚拟视图控件,则通过底层套接字通信器563,通过网络将UI的更新请求传递给远端的虚拟视图控件。
业务B502对应的虚拟视图控件507,收到了UI更新同步器506反馈的UI更新指令后,将UI更新指令进行解码,产生适用于当前平台的UI更新操作,并将UI更新操作传给虚拟视图控件507对应的代理视图508。
代理视图508,收到UI更新操作后向操作系统的显示界面控制器504请求UI更新,从而操作系统的显示界面控制器504对代理视图508进行重绘,最终形成UI样式同步更新;这样,保证了UI在不同场景下的最终一致性,减少对用户造成的UI不一致的歧义;而且在不同进程和不同平台复用同一视图,能够减少不同平台同一样式的重复开发,提升多端并行开发的效率。
下面继续说明本发明实施例提供的视图更新的服务器455的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器440的视图更新的服务器455中的软件模块可以包括:
第一获取模块4551,用于获取目标业务发送的视图添加请求;
第一确定模块4552,用于确定所述视图添加请求对应的目标视图;
第二确定模块4553,用于如果所述目标视图已经添加在其他业务上,确定所述目标视图的状态信息;
第一创建模块4554,用于根据所述目标视图的状态信息,创建代理视图;
第一添加模块4555,用于将所述代理视图,添加在所述目标业务上。
在一些实施例中,第二确定模块4553,还用于:如果所述目标视图当前未添加在任一业务上,将所述目标视图添加在所述目标业务上。
在一些实施例中,第一创建模块4554,还用于:将所述目标视图的状态信息发送给所述目标业务中的第一虚拟视图控件;对应地,采用所述第一虚拟视图控件,根据所述目标视图的状态信息,创建所述代理视图。
在一些实施例中,第一创建模块4554,还用于:采用所述第一虚拟视图控件,确定与所述目标视图的状态信息相匹配的代理状态信息;根据所述代理状态信息,创建所述代理视图。
在一些实施例中,第一添加模块4555,还用于:获取所述目标业务发送的更新所述目标视图的更新指令;响应于所述更新指令,对所述目标视图对应的代理视图进行更新;将对所述代理视图进行更新的更新信息,传递给所述第一虚拟视图控件;采用所述第一虚拟视图控件,将所述更新信息发送给所述其他业务中的第二虚拟视图控件,以更新所述其他业务中已添加的所述目标视图。
在一些实施例中,第一添加模块4555,还用于:响应于所述更新指令,对所述代理视图对应的当前显示界面进行更新;对应地,将对当前界面进行更新的更新信息,传递给所述第一虚拟视图控件。
在一些实施例中,第一添加模块4555,还用于:采用所述第一虚拟视图控件,将所述更新信息发送给所述当前显示界面的更新同步器;采用所述更新同步器,将所述更新信息传递给所述第二虚拟视图控制器;采用所述第二虚拟视图控件,根据所述更新信息,更新所述其他业务中已添加的所述目标视图。
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EE PROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种终端。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(H yper Text MarkupLanguage,HTML)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个车载计算终端上执行,或者在位于一个地点的多个计算终端上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算终端上执行。
综上所述,本发明实施例将已添加在其他业务中的目标视图添加在目标业务的过程中,首先,获取目标业务发送的视图添加请求;确定所述视图添加请求对应的目标视图;然后,如果所述目标视图已经添加在其他业务上,确定所述目标视图的状态信息;根据所述目标视图的状态信息,创建代理视图;最后,将所述代理视图,添加在所述目标业务上。如此,当获取到目标业务需要添加一个视图的视图添加请求时,根据目标视图的状态信息创建一个代理视图,将该代理视图添加在该业务中,实现了将已添加在其他业务中的目标视图添加在目标业务中,从而保证了不同业务之间的一致性。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
- 视图更新方法、装置、设备及存储介质
- 一种列表视图的更新方法、装置、设备及存储介质