买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】活动窗口的数据共享方法、装置、设备及存储介质_武汉斗鱼网络科技有限公司_201810803661.6 

申请/专利权人:武汉斗鱼网络科技有限公司

申请日:2018-07-20

公开(公告)日:2021-07-23

公开(公告)号:CN109117221B

主分类号:G06F9/451(20180101)

分类号:G06F9/451(20180101);G06F9/54(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.07.23#授权;2019.01.25#实质审查的生效;2019.01.01#公开

摘要:本发明实施例公开了一种活动窗口的数据共享方法、装置、设备及存储介质。该方法包括:获取待共享数据和目标活动窗口对象对应的目标上下文对象;以目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象;调用目标数据缓存对象中的数据存储函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。通过上述技术方案,实现了Android系统中活动窗口页面作用域内的数据共享,且在活动窗口页面切换时,切换后活动窗口页面对应的共享数据独立于切换前活动窗口页面对应的共享数据,从而避免了切换前活动窗口页面的脏数据对切换后活动窗口页面造成影响。

主权项:1.一种活动窗口的数据共享方法,其特征在于,包括:获取待共享数据和目标活动窗口对象对应的目标上下文对象;以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系包括:目标映射关系对象用于存储Android客户端中每个活动窗口对象与相应的数据缓存对象之间的一一对应关系;调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中,所述目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。

全文数据:活动窗口的数据共享方法、装置、设备及存储介质技术领域本发明实施例涉及计算机技术,尤其涉及一种活动窗口的数据共享方法、装置、设备及存储介质。背景技术在Android系统中,活动窗口被称为Activity。Activity是一个负责与用户交互的组件,其提供一个屏幕可以理解为屏幕界面,而非实体的显示屏幕,以供用户交互完成某项任务。在一个Android应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。通常,一个Android应用程序可以由多个彼此松散联系的Activity组成。而且每个Activity均可启动另一个Activity,以便执行不同的操作。目前,通常将活动窗口作用域内的数据存储在静态内存中,以实现数据共享。然而,在Activity页面切换时,静态内存中缓存的切换前Activity页面对应的数据不能及时被清除即脏数据,导致切换后的当前Activity页面可以共享切换前Activity页面的脏数据,从而将切换前Activity页面的脏数据显示在当前Activity页面上,对当前Activity页面造成影响。发明内容本发明实施例提供了一种活动窗口的数据共享方法、装置、设备及存储介质,以更加精确的方式实现Android系统中活动窗口页面作用域内的数据共享,使得在Activity页面切换时,切换后活动窗口页面对应的共享数据独立于切换前活动窗口页面对应的共享数据,从而避免了切换前活动窗口页面的脏数据对切换后活动窗口页面造成影响。第一方面,本发明实施例提供了一种活动窗口的数据共享方法,包括:获取待共享数据和目标活动窗口对象对应的目标上下文对象;以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中。第二方面,本发明实施例还提供了一种活动窗口的数据共享装置,包括:目标上下文对象获取模块,用于获取待共享数据和目标活动窗口对象对应的目标上下文对象;目标数据缓存对象获取模块,用于以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;共享数据存储模块,用于调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中。第三方面,本发明实施例还提供了一种设备,所述设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的活动窗口的数据共享方法。第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的活动窗口的数据共享方法。本发明实施例通过预先为每个活动窗口对象设置一个独立的数据缓存对象,以存储对应活动窗口对象作用域内的共享数据,避免了在同一静态内存中存储多个活动窗口对象的共享数据,为各个活动窗口对象进行独立的数据共享提供数据存储基础。通过预先建立每个活动窗口对象与数据缓存对象之间的映射关系,并将该映射关系存储至目标映射关系对象中,以映射关系对象的方式,维护活动窗口对象与其对应的数据缓存对象之间的关联性,以使得数据缓存对象的生命周期与对应的活动窗口对象的生命周期一致,为各个活动窗口对象进行独立的数据共享提供数据清除基础。通过以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象,并调用目标数据缓存对象中的数据存储函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。实现了以更加精确的方式进行Android系统中活动窗口页面作用域内的数据共享,使得在Activity页面切换时,切换后活动窗口页面对应的共享数据独立于切换前活动窗口页面对应的共享数据,从而避免了切换前活动窗口页面的脏数据对切换后活动窗口页面造成影响。附图说明图1是本发明实施例一提供的一种活动窗口的数据共享方法的流程图;图2是本发明实施例二提供的一种活动窗口的数据共享方法的流程图;图3是本发明实施例三提供的一种活动窗口的数据共享方法的流程图;图4是本发明实施例四提供的一种活动窗口的数据共享装置的结构示意图;图5是本发明实施例五提供的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。实施例一图1为本发明实施例一提供的一种活动窗口的数据共享方法的流程图,本实施例可适用于将每个活动窗口页面作用域内的数据进行全局性和独立性存储的情况,尤其可以用于在Android应用程序中独立存储每个活动窗口页面数据的场景中。该方法可以由活动窗口的数据共享装置来执行,该装置可以由软件和或硬件的方式来实现,该装置可以集成于安装有Android应用程序的设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图1,本实施例的方法具体包括如下步骤:S110、获取待共享数据和目标活动窗口对象对应的目标上下文对象。其中,待共享数据是指目标活动窗口对象作用域内的数据,其需要共享至目标活动窗口对象作用域内的其他组件对象。目标活动窗口对象是指目标活动窗口对应的活动窗口对象。活动窗口对象是指一个活动窗口在初始化时构建的相应对象。目标上下文对象是指目标活动窗口对象对应的上下文对象。具体地,每个活动窗口在初始化时均构建一个活动窗口对象,且每个活动窗口与活动窗口对象是一一对应关系。每个活动窗口对象也唯一对应一个上下文对象。本发明实施例中目标活动窗口可以是任意一个活动窗口。在获得了目标活动窗口对象之后,根据该目标活动窗口对象获取其唯一对应的目标上下文对象。在进行数据共享时,还需获取待共享数据,本实施例中的待共享数据可以是目标活动窗口中任一组件的字符串类型的数据。S120、以目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。其中,数据缓存类是预先定义的一个可存储活动窗口作用域内数据的类。数据缓存对象是数据缓存类实例化后的对象。数据缓存对象实例化的时机是与其关联的活动窗口被创建的时机,即在生成活动窗口对象时,生成该活动窗口对象对应的数据缓存对象。这样,每个活动窗口对象均对应一个独立的数据缓存对象,该数据缓存对象用于存储对应的活动窗口对象的待共享数据,便于独立管理每个活动窗口对象的数据,进而可以避免在同一静态内存中存储多个活动窗口对象的共享数据及共享数据清除不及时而导致脏数据的问题。本实施例利用目标数据缓存对象来存储对应的目标活动窗口对象的待共享数据。目标映射关系对象是指存储映射关系的对象。示例性地,目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系。就是说,目标映射关系对象用于存储Android客户端中每个活动窗口对象与相应的数据缓存对象之间的一一对应关系。在本实施例中,若目标映射关系对象中未存储某个活动窗口对象与数据缓存对象之间的映射关系,则表明该活动窗口对象作用域内的数据未进行存储,从而无法进行共享。若Android客户端中启动新活动窗口,则需要预先将新活动窗口对象与其对应的新数据缓存对象之间的映射关系存储至目标映射关系对象中,以便对新活动窗口对象的数据进行共享。示例性地,目标映射关系对象具有私有权限修饰符和静态类型修饰符。私有权限修饰符private的设置是为了保证数据的私密性;静态类型修饰符static的设置目的是使得在多个活动窗口对象被实例化时,在内存中有且只有一个目标映射关系对象,从而可以有效保证全局内存中仅存在一个目标映射关系对象,即保证了目标映射关系对象的唯一性,便于将每个活动窗口对象与数据缓存对象之间的映射关系均存储在同一个目标映射关系对象中。对象获取函数是预先定义的,用于获取目标数据缓存对象的函数。示例性地,对象获取函数具有私有权限修饰符和静态类型修饰符。私有权限修饰符private的设置目的是为了保证只有对象获取函数所属的类及其实例化对象才可访问,即数据缓存类和数据缓存对象可访问;静态类型修饰符static的设置目的是可以直接通过类名进行调用,无需通过对象中转的方式进行调用,进而提高了对象获取函数的访问便捷性。例如对象获取函数可以定义为:privatestaticActivityCachegetActivityCacheContextcontext{}。其中,ActivityCache是数据缓存类的类名,其表征对象获取函数getActivityCache的函数返回值为一个数据缓存类类型的数据缓存对象,对象获取函数的函数输入参数为一个Context类型的上下文对象。具体地,将目标上下文对象作为对象获取函数getActivityCache的输入参数,通过数据缓存类ActivityCache调用对象获取函数getActivityCache,从而在目标映射关系对象中获取目标上下文对象对应的目标数据缓存对象mActivityCache,即目标活动窗口对象对应的目标数据缓存对象mActivityCache。示例性地,在S120之前,还包括:在数据缓存类的构造函数中,调用第一初始化子函数,初始化预先定义的第一映射关系对象,获得第二映射关系对象;根据各活动窗口对象对应的上下文对象,调用哈希码值获取子函数,获取各上下文对象的各哈希码值;调用第二映射关系对象中的元素添加函数,将各哈希码值和对应的各数据缓存对象存储至第二映射关系对象,获得目标映射关系对象。其中,第一映射关系对象是指定义的映射关系对象,其未被初始化及赋值。第二映射关系对象是指初始化之后的映射关系对象。哈希码值获取子函数是预先定义的,对象获取函数中用于获取上下文对象的哈希码值的内部函数。每个活动窗口对象对应的上下文对象均具有唯一的一个哈希码值,从而可以利用上下文对象的哈希码值来唯一表示一个活动窗口对象。哈希码值可以是根据上下文对象的地址、字符串和或数据确定的整型Integer结构的数值。元素添加函数可以是预先定义的,用于在第二映射关系对象中添加哈希码与数据缓存对象之间的映射关系的函数。具体地,由于活动窗口对象是一个非常庞大的对象,若直接存储活动窗口对象与数据缓存对象之间的映射关系,则会导致内存压力过大,所以本实施例中将映射关系对象的数据结构,设计为存储对应于活动窗口对象的上下文对象的哈希码值与数据缓存对象之间的映射关系。这样可以大大减少占用内存空间,从而提高运行速率。并且根据某个活动窗口对象对应的哈希码值,可以更加准确且快速地确定该活动窗口对象对应的数据缓存对象,进而提高对象获取函数的执行效率。例如映射关系对象的数据结构可以定义为:privatestaticHashMapInteger,ActivityCachemProxyMaps。其中,映射关系对象mProxyMaps是通过HashMap的数据结构进行承载,HashMap是基于哈希表的Map接口的实现,以键值对Key-Value的形式存在。映射关系对象mProxyMaps中的Map数据结构中的键信息是一个整数Integer类型的对象,用于存放上下文对象context的哈希码值hashCode;值信息是一个数据缓存类ActivityCache类型的对象,用于存放数据缓存对象。具体实施时,在从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象之前,需要先获取目标映射关系对象,即将每个活动窗口对象与其对应数据缓存对象之间的映射关系存储至目标映射关系对象中。本实施例可以通过mProxyMaps1==null判断映射关系对象mProxyMaps是否为空对象null对象。若是,则表明该映射关系对象未被初始化,其引用指向为空,是一个第一映射关系对象,此时调用对映射关系对象进行初始化的初始化函数即第一初始化子函数,对第一映射关系对象mProxyMaps1进行初始化,即mProxyMaps2=newHashMapInteger,ActivityCache,获得第二映射关系对象mProxyMaps2。若否,则说明该映射关系对象已经是一个初始化之后的映射关系对象,则将其直接确定为第二映射关系对象mProxyMaps2。然后,分别以每个活动窗口对象对应的上下文对象为函数输入参数,调用哈希码值获取子函数context.hashCode,获取每个上下文对象的哈希码值。之后,分别调用元素添加函数mProxyMaps2.putcode,ActivityCache,将每个哈希码值及其对应的数据缓存对象添加至第二映射关系对象mProxyMaps2中,获得目标映射关系mProxyMaps。需要说明的是,由于映射关系对象定义在数据缓存类中,故上述对映射关系对象进行初始化的过程在数据缓存类ActivityCache的构造函数中实现。示例性地,对象获取函数通过如下步骤实现从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象的功能:判断对象获取函数的输入参数是否为空对象;若否,则通过目标上下文对象,调用哈希码值获取子函数,获取目标上下文对象的目标哈希码值;以目标哈希码值为函数输入参数,调用目标映射关系对象中的对象获取子函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。具体地,对象获取函数内部,首先通过context==null判定对象获取函数的输入参数context是否为空对象null。若否,则认为对象获取函数的输入参数为目标上下文对象context。此时,通过目标上下文对象context调用哈希码值获取子函数hashCode,代码实现为context.hashCode,获取目标上下文对象对应的目标哈希码值code。之后,以目标哈希码值code为对象获取子函数的输入参数,通过目标映射关系对象调用对象获取子函数mProxyMaps.getcode,从目标映射关系对象mProxyMaps中获取目标哈希码值对应的目标数据缓存对象,即目标活动窗口对象对应的目标数据缓存对象。最后可以通过return将获取到的目标数据缓存对象进行返回处理。若对象获取函数的输入参数context为空对象null,则认为对象获取函数的输入参数错误,从而无法从目标映射关系对象中获取目标数据缓存对象,此时可以直接通过returnnull方式返回。S130、调用目标数据缓存对象中的数据存储函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中,所述目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。其中,数据存储函数是预先定义的,用于将待共享数据存储至目标数据缓存对象中的目标数据对象中的函数。示例性地,数据存储函数可以定义如下:publicvoidsetDataStringkey,Stringvalue。其中,setData是数据存储函数的函数名称,数据存储函数setData具有公有权限修饰符public,以便可以直接调用setData,并且setData无返回值。存储数据设定为一个字符串String类型的键信息key和一个字符串String类型的值信息value,与后续的目标数据对象的数据结构相对应,以便于进行数据的存储操作。数据对象是预先定义的,用于存储数据的对象。目标数据对象则是用于存储待共享数据的对象,其数据类型定义为诸如map和set等数据类型的键值对数据结构,并且键值对数据结构中的键的类型即键类型和值的类型即值类型均定义为字符串string类型。示例性地,目标数据对象的数据结构可以定义为:privateHashMapString,StringdataMap。其中,dataMap为目标数据对象名,目标数据对象dataMap具有私有权限修饰符private,以便防止除数据缓存类之外的其他类直接访问dataMap,从而可以有效保护dataMap的数据信息。目标数据对象dataMap的数据结构为HashMapString,String,即dataMap为一个Map集合对象,并且键信息和值信息均是字符串String类型的数据。本实施例是将字符串类型的待共享数据存储至目标数据缓存对象中的目标数据对象dataMap中。在本实施例中,目标活动窗口中的任一组件都可以通过调用目标缓存对象中的数据存储函数,将自身组件数据作为待共享数据存储至目标数据对象中,以实现数据仅能在目标活动窗口的作用域内进行共享,非目标活动窗口中的组件不能共享目标活动窗口对应的目标数据对象中的数据,从而在切换目标活动窗口页面时,切换后的目标活动窗口页面无法共享切换前的活动窗口页面数据,即目标活动窗口页面没有对应的脏数据,进而防止将切换前的活动窗口页面的脏数据显示在目标活动窗口页面上,避免了对目标活动窗口页面造成影响。示例性地,数据存储函数通过如下步骤实现将待共享数据存储至目标数据缓存对象中的目标数据对象中的功能:判断目标数据缓存对象中的目标数据对象是否为空对象;若是,则调用第二初始化子函数,初始化预先定义的第一数据对象,获得目标数据对象;依据待共享数据,调用目标数据对象中的数据存储子函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。具体地,通过dataMap==null判断目标数据缓存对象中的目标数据对象dataMap是否为空对象null,若是,则表明dataMap的引用指向为空,即还未对dataMap进行初始化和实例化,此时调用第二初始化子函数,对预先定义的第一数据对象dataMap1进行初始化。示例性地,可以调用data1Map=newHashMapString,String方法对dataMap1进行初始化操作,获得目标数据对象dataMap。若否,则表明已对dataMap进行初始化和实例化,此时可以直接将第一数据对象dataMap1确定为目标数据对象dataMap。本实施例通过确定目标数据缓存对象中的目标数据对象dataMap是否为空对象null,可以增强程序的健壮性,以避免后续操作出现错误。在获取目标数据缓存对象mActivityCache中的目标数据对象dataMap后,通过目标数据对象dataMap,调用数据存储子函数dataMap.putkey,value,将字符串类型的待共享数据以key和value的形式存储至目标数据对象dataMap中,从而实现了将待共享数据存储至一个Activity级别的目标数据对象中。需要说明的是,由于数据对象dataMap定义在数据缓存类中,故上述对数据对象进行初始化的过程在数据缓存类ActivityCache的构造函数中实现,从而可以保证一个数据缓存类只对应一个目标数据对象dataMap。本实施例的技术方案,通过预先为每个活动窗口对象设置一个独立的数据缓存对象,以存储对应活动窗口对象作用域内的共享数据,避免了在同一静态内存中存储多个活动窗口对象的共享数据,为各个活动窗口对象进行独立的数据共享提供数据存储基础。通过预先建立每个活动窗口对象与数据缓存对象之间的映射关系,并将该映射关系存储至目标映射关系对象中,以映射关系对象的方式,维护活动窗口对象与其对应的数据缓存对象之间的关联性,以使得数据缓存对象的生命周期与对应的活动窗口对象的生命周期一致,为各个活动窗口对象进行独立的数据共享提供数据清除基础。通过以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象,并调用目标数据缓存对象中的数据存储函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。实现了以更加精确的方式进行Android系统中活动窗口页面作用域内的数据共享,使得在Activity页面切换时,切换后活动窗口页面对应的共享数据独立于切换前活动窗口页面对应的共享数据,从而避免了切换前活动窗口页面的脏数据对切换后活动窗口页面造成影响。实施例二图2为本发明实施例二提供的一种活动窗口的数据共享方法的流程图,本实施例在上述实施例的基础上进行优化:在从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象之后,还包括:以待获取数据对应的数据标识为函数输入参数,调用目标数据缓存对象中的数据读取函数,从目标数据对象中读取待获取数据。优化后的活动窗口的数据共享方法具体包括如下步骤:S210、获取待共享数据和目标活动窗口对象对应的目标上下文对象。S220、以目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。S230、以待获取数据对应的数据标识为函数输入参数,调用目标数据缓存对象中的数据读取函数,从目标数据对象中读取待获取数据。其中,数据标识是指唯一区分一个数据的标识符,其为字符串类型。本实施例中,数据标识可以作为目标数据对象dataMap中的键信息。数据读取函数是预先定义的,用于根据待获取数据对应的数据标识从目标数据对象中读取待获取数据的函数。示例性地,数据读取函数可以定义为:publicStringgetDataStringkey。其中,getData是数据读取函数的名称,数据读取函数getData具有公有权限修饰符public,以便可以直接调用getData,并且getData函数可以返回字符串String类型的数据。具体地,将待获取数据对应的字符串String类型的数据标识作为数据读取函数getData的输入参数key,通过调用getData,从目标数据对象中获取该数据标识key对应的字符串类型的value数据,即待获取数据。在本实施例中,目标活动窗口中的任一组件均可以通过调用数据读取函数来读取目标数据对象中的共享数据,而无法读取非目标数据对象中的数据,从而可以限制数据只能在目标活动窗口的作用域内进行共享,进而避免其他活动窗口页面显示目标活动窗口页面的数据。示例性地,数据读取函数通过如下步骤实现从目标数据对象中读取待获取数据的功能:判断数据读取函数的输入参数是否为空对象;若否,则以数据标识为函数输入参数,调用数据读取子函数,从目标数据对象中读取待获取数据。具体地,通过key==null判断确定数据读取函数的输入参数key是否为空对象null。若否,则表明数据读取函数的输入参数为待获取数据的数据标识key,此时以数据标识为数据读取子函数的输入参数,调用数据读取子函数dataMap.getkey,从目标数据对象dataMap中读取数据标识key对应的value数据,从而获取待获取数据。若数据读取函数的输入参数为空对象,则表明目标数据对象中不存在输入的数据标识对应的数据,此时可以直接通过returnnull方式返回。本实施例的技术方案,通过在获取目标活动窗口对象对应的目标数据缓存对象后,以待获取数据对应的数据标识为函数输入参数,调用目标数据缓存对象中的数据读取函数,从目标数据缓存对象中的目标数据对象中读取该数据标识对应的数据,从而只能获得目标活动窗口中的数据,避免获取除目标活动窗口之外的其他活动窗口中的数据,进而避免其他活动窗口中的数据对目标活动窗口页面造成影响,实现了目标活动窗口的数据只能在目标活动窗口的作用域中进行共享的效果。实施例三图3为本发明实施例三提供的一种活动窗口的数据共享方法的流程图,本实施例在上述实施例的基础上进行优化:在从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象之后,还包括:在目标活动窗口销毁时,以目标上下文对象为函数输入参数,调用目标数据缓存对象中的对象释放函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。优化后的活动窗口的数据共享方法具体包括如下步骤:S310、获取待共享数据和目标活动窗口对象对应的目标上下文对象。S320、以目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。S330、在目标活动窗口销毁时,以目标上下文对象为函数输入参数,调用目标数据缓存对象中的对象释放函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。其中,当目标活动窗口页面进行切换时,此时需要将目标活动窗口进行销毁,即目标活动窗口的生命周期处于onDestroy阶段。对象释放函数是预先定义的,用于释放目标活动窗口的资源数据的函数。示例性地,对象释放函数可以定义如下:publicvoidreleaseActivityContextcontext其中,releaseActivity是对象释放函数的函数名称,对象释放函数releaseActivity具有公有权限修饰符public,以便可以直接调用releaseActivity,并且releaseActivity无返回值。对象释放函数releaseActivity的输入参数为一个Context类型的上下文对象。具体地,将目标上下文对象作为releaseActivity的输入参数,通过调用目标数据缓存对象中的releaseActivity,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系,以无法从映射关系对象中确定目标数据缓存对象,从而在目标活动窗口页面Activity切换后,目标活动窗口页面Activity对应的缓存数据不会构成下一个活动窗口页面的脏数据,从而不会对后一个活动窗口页面造成影响,间接达到了及时释放目标活动窗口页面Activity的脏数据的效果。示例性地,对象释放函数通过如下步骤实现删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系的功能:判断对象释放函数的输入参数是否为空对象;若否,则通过目标上下文对象,调用哈希码值获取子函数,获取目标上下文对象的目标哈希码值;以目标哈希码值为函数输入参数,调用对象释放子函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。具体地,通过context==null判定对象获取函数的输入参数context是否为空对象null。若否,则表明对象获取函数的输入参数为目标上下文对象context,此时以目标上下文对象为哈希码值获取子函数的输入参数,通过目标上下文对象context,调用哈希码值获取子函数context.hashCode,获取目标上下文对象对应的目标哈希码值code。之后,以目标希码值code为对象释放子函数的输入参数,调用对象释放子函数mProxyMaps.removecode,从目标映射关系对象mProxyMaps中删除目标活动窗口对象与目标数据缓存对象之间的映射关系,从而达到及时释放目标活动窗口对应的共享数据的效果。若对象获取函数的输入参数context为空对象null,则表明目标映射关系对象中不存在目标上下文对象context对应的映射关系,无需执行释放操作,此时可以直接通过returnnull方式返回。本实施例的技术方案,通过在目标活动窗口销毁时,以目标上下文对象为函数输入参数,调用目标数据缓存对象中的对象释放函数,删除目标映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系,从而达到了及时释放目标活动窗口作用域内的共享数据的效果,进而避免目标活动窗口页面的脏数据影响其他活动窗口页面。实施例四图4为本发明实施例四提供的一种活动窗口的数据共享装置的结构示意图。参见图4,活动窗口的数据共享装置具体包括:目标上下文对象获取模块410、目标数据缓存对象获取模块420和共享数据存储模块430。其中,目标上下文对象获取模块410,用于获取待共享数据和目标活动窗口对象对应的目标上下文对象;目标数据缓存对象获取模块420,用于以目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象,其中,目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,目标映射关系对象具有私有权限修饰符和静态类型修饰符,对象获取函数具有私有权限修饰符和静态类型修饰符;共享数据存储模块430,用于调用目标数据缓存对象中的数据存储函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。可选地,在上述装置的基础上,该装置还包括:第二映射关系对象获取模块,用于在以目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象之前,在数据缓存类的构造函数中,调用第一初始化子函数,初始化预先定义的第一映射关系对象,获得第二映射关系对象;哈希码值获取模块,用于根据各活动窗口对象对应的上下文对象,调用哈希码值获取子函数,获取各上下文对象的各哈希码值;目标映射关系对象获取模块,用于调用第二映射关系对象中的元素添加函数,将各哈希码值和对应的各数据缓存对象存储至第二映射关系对象,获得目标映射关系对象。可选地,目标数据缓存对象获取模块420包括对象获取函数执行单元,用于:通过如下步骤实现从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象的功能:判断对象获取函数的输入参数是否为空对象;若否,则通过目标上下文对象,调用哈希码值获取子函数,获取目标上下文对象的目标哈希码值;以目标哈希码值为函数输入参数,调用目标映射关系对象中的对象获取子函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。可选地,共享数据存储模块430包括数据存储函数执行单元,用于:通过如下步骤实现将待共享数据存储至目标数据缓存对象中的目标数据对象中的功能:判断目标数据缓存对象中的目标数据对象是否为空对象;若是,则调用第二初始化子函数,初始化预先定义的第一数据对象,获得目标数据对象;依据待共享数据,调用目标数据对象中的数据存储子函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。可选地,在上述装置的基础上,该装置还包括:待获取数据读取模块,用于在从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象之后,以待获取数据对应的数据标识为函数输入参数,调用目标数据缓存对象中的数据读取函数,从目标数据对象中读取待获取数据。可选地,在上述装置的基础上,该装置还包括:映射关系删除模块,用于在目标活动窗口销毁时,以目标上下文对象为函数输入参数,调用目标数据缓存对象中的对象释放函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。可选地,映射关系删除模块包括对象释放函数执行单元,用于:通过如下步骤实现删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系的功能:判断对象释放函数的输入参数是否为空对象;若否,则通过目标上下文对象,调用哈希码值获取子函数,获取目标上下文对象的目标哈希码值;以目标哈希码值为函数输入参数,调用对象释放子函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。上述活动窗口的数据共享装置可执行本发明任意实施例所提供的活动窗口的数据共享方法,具备执行活动窗口的数据共享方法相应的功能模块和有益效果。值得注意的是,上述活动窗口的数据共享装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。实施例五图5是本发明实施例五提供的一种设备的结构示意图。参见图5,该设备包括:一个或多个处理器510;存储器520,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器510执行,使得一个或多个处理器510用于执行一种活动窗口的数据共享方法,该方法包括:获取待共享数据和目标活动窗口对象对应的目标上下文对象;以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中。当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的活动窗口的数据共享方法中的相关操作。图5中以一个处理器510为例;设备中的处理器510和存储器520可以通过总线或其他方式连接,图5中以通过总线连接为例。存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的虚拟礼物的展示方法对应的程序指令模块例如,活动窗口的数据共享装置中的目标上下文对象获取模块410、目标数据缓存对象获取模块420和共享数据存储模块430。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的活动窗口的数据共享方法。存储器520主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。本实施例提出的设备与上述实施例提出的活动窗口的数据共享方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行活动窗口的数据共享方法相同的有益效果。实施例六本实施例六提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种活动窗口的数据共享方法,该方法包括:获取待共享数据和目标活动窗口对象对应的目标上下文对象;以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中。当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的活动窗口的数据共享方法中的相关操作。本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子非穷举的列表包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器RAM、只读存储器ROM、可擦式可编程只读存储器EPROM或闪存、光纤、便携式紧凑磁盘只读存储器CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网LAN或广域网WAN,连接到用户计算机,或者,可以连接到外部计算机例如利用因特网服务提供商来通过因特网连接。上述实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

权利要求:1.一种活动窗口的数据共享方法,其特征在于,包括:获取待共享数据和目标活动窗口对象对应的目标上下文对象;以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中,所述目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。2.根据权利要求1所述的方法,其特征在于,在以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象之前,还包括:在所述数据缓存类的构造函数中,调用第一初始化子函数,初始化预先定义的第一映射关系对象,获得第二映射关系对象;根据各所述活动窗口对象对应的上下文对象,调用哈希码值获取子函数,获取各所述上下文对象的各哈希码值;调用所述第二映射关系对象中的元素添加函数,将各所述哈希码值和对应的各所述数据缓存对象存储至所述第二映射关系对象,获得所述目标映射关系对象。3.根据权利要求1所述的方法,其特征在于,所述对象获取函数通过如下步骤实现所述从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象的功能:判断所述对象获取函数的输入参数是否为空对象;若否,则通过所述目标上下文对象,调用哈希码值获取子函数,获取所述目标上下文对象的目标哈希码值;以所述目标哈希码值为函数输入参数,调用所述目标映射关系对象中的对象获取子函数,从所述目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象。4.根据权利要求1所述的方法,其特征在于,所述数据存储函数通过如下步骤实现所述将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中的功能:判断所述目标数据缓存对象中的目标数据对象是否为空对象;若是,则调用第二初始化子函数,初始化预先定义的第一数据对象,获得目标数据对象;依据所述待共享数据,调用所述目标数据对象中的数据存储子函数,将所述待共享数据存储至所述目标数据缓存对象中的所述目标数据对象中。5.根据权利要求1所述的方法,其特征在于,在所述从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象之后,还包括:以待获取数据对应的数据标识为函数输入参数,调用所述目标数据缓存对象中的数据读取函数,从所述目标数据对象中读取所述待获取数据。6.根据权利要求1所述的方法,其特征在于,还包括:在所述目标活动窗口销毁时,以所述目标上下文对象为函数输入参数,调用所述目标数据缓存对象中的对象释放函数,删除所述目标映射关系对象中的所述目标数据缓存对象与所述目标活动窗口对象之间的映射关系。7.根据权利要求6所述的方法,其特征在于,所述对象释放函数通过如下步骤实现删除所述目标映射关系对象中的所述目标数据缓存对象与所述目标活动窗口对象之间的映射关系的功能:判断所述对象释放函数的输入参数是否为空对象;若否,则通过所述目标上下文对象,调用哈希码值获取子函数,获取所述目标上下文对象的目标哈希码值;以所述目标哈希码值为函数输入参数,调用对象释放子函数,删除所述目标映射关系对象中的所述目标数据缓存对象与所述目标活动窗口对象之间的映射关系。8.一种活动窗口的数据共享装置,其特征在于,包括:目标上下文对象获取模块,用于获取待共享数据和目标活动窗口对象对应的目标上下文对象;目标数据缓存对象获取模块,用于以所述目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,其中,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,所述目标映射关系对象具有私有权限修饰符和静态类型修饰符,所述对象获取函数具有私有权限修饰符和静态类型修饰符;共享数据存储模块,用于调用所述目标数据缓存对象中的数据存储函数,将所述待共享数据存储至所述目标数据缓存对象中的目标数据对象中。9.一种设备,其特征在于,所述设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的活动窗口的数据共享方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的活动窗口的数据共享方法。

百度查询: 武汉斗鱼网络科技有限公司 活动窗口的数据共享方法、装置、设备及存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。