CN109144633A - 活动窗口的数据共享方法、装置、设备及存储介质 - Google Patents

活动窗口的数据共享方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN109144633A
CN109144633A CN201810804480.5A CN201810804480A CN109144633A CN 109144633 A CN109144633 A CN 109144633A CN 201810804480 A CN201810804480 A CN 201810804480A CN 109144633 A CN109144633 A CN 109144633A
Authority
CN
China
Prior art keywords
target
data
string
map
shared
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.)
Granted
Application number
CN201810804480.5A
Other languages
English (en)
Other versions
CN109144633B (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810804480.5A priority Critical patent/CN109144633B/zh
Publication of CN109144633A publication Critical patent/CN109144633A/zh
Application granted granted Critical
Publication of CN109144633B publication Critical patent/CN109144633B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种活动窗口的数据共享方法、装置、设备及存储介质。该方法包括:依据至少一个待共享数据生成目标共享数据,目标共享数据包含目标键信息和目标值信息,目标值信息的数据结构为预设字符串结构,预设字符串结构包含目标预设分隔符及目标分隔符标识;以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标数据缓存对象;调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据对象中。通过上述技术方案,更加精确且快速地实现Android系统中活动窗口页面作用域内批量数据的共享。

Description

活动窗口的数据共享方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种活动窗口的数据共享方法、装置、设备及存储介质。
背景技术
在Android系统中,活动窗口被称为Activity。Activity是一个负责与用户交互的组件,其提供一个屏幕(可以理解为屏幕界面,而非实体的显示屏幕),以供用户交互完成某项任务。在一个Android应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
通常,一个Android应用程序可以由多个彼此松散联系的Activity组成。而且每个Activity均可启动另一个Activity,以便执行不同的操作。目前,通常将活动窗口作用域内的数据存储在静态内存中,以实现数据共享。
然而,在Activity页面切换时,静态内存中缓存的切换前Activity页面对应的数据不能及时被清除(即脏数据),导致切换后Activity页面可以共享切换前Activity页面的脏数据,从而将切换前Activity页面的脏数据显示在切换后Activity页面上,对切换后Activity页面造成影响。
发明内容
本发明实施例提供一种活动窗口的数据共享方法、装置、设备及存储介质,以更加精确且快速地实现Android系统中活动窗口页面作用域内批量数据的共享,有效避免了切换前活动窗口页面的脏数据对切换后活动窗口页面造成影响。
第一方面,本发明实施例提供了一种活动窗口的数据共享方法,包括:
依据至少一个待共享数据生成目标共享数据,目标共享数据包含目标键信息和目标值信息,目标值信息的数据结构为预设字符串结构,预设字符串结构包含目标预设分隔符对应的目标分隔符标识及目标预设分隔符;
以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象,目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,且具有私有权限修饰符和静态类型修饰符;
调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中,目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。
第二方面,本发明实施例还提供了一种活动窗口的数据共享装置,该装置包括:
目标共享数据生成模块,用于依据至少一个待共享数据生成目标共享数据,目标共享数据包含目标键信息和目标值信息,目标值信息的数据结构为预设字符串结构,预设字符串结构包含目标预设分隔符对应的目标分隔符标识及目标预设分隔符;
目标数据缓存对象获取模块,用于以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象,目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,且具有私有权限修饰符和静态类型修饰符;
共享数据存储模块,用于调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中,目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的活动窗口的数据共享方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的活动窗口的数据共享方法。
本发明实施例通过预先为每个活动窗口对象设置一个独立的数据缓存对象,以存储对应活动窗口对象作用域内的共享数据,避免了在同一静态内存中存储多个活动窗口对象的共享数据,为各个活动窗口对象进行独立的数据共享提供数据存储基础。通过依据至少一个待共享数据生成具有预设字符串结构的一个目标共享数据,为实现批量化的数据共享提供数据结构基础。通过在预设字符串结构中设置目标预设分隔符和目标分隔符标识,提高目标共享数据在类型转换过程中的数据完整性与正确性。通过预先建立每个活动窗口对象与数据缓存对象之间的映射关系,并将该映射关系存储至目标映射关系对象中,以映射关系对象的方式,维护活动窗口对象与其对应的数据缓存对象之间的关联性,以使得数据缓存对象的生命周期与对应的活动窗口对象的生命周期一致,为各个活动窗口对象进行独立的数据共享提供数据释放基础。通过调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中。实现了更加精确且快速地进行Android系统中活动窗口页面作用域内批量数据的共享,使得在Activity页面切换时,切换后Activity页面对应的共享数据独立于切换前Activity页面对应的共享数据,从而有效避免了切换前Activity页面的脏数据对切换后Activity页面造成影响。
附图说明
图1是本发明实施例一中的一种活动窗口的数据共享方法的流程图;
图2是本发明实施例二中的一种活动窗口的数据共享方法的流程图;
图3是本发明实施例三中的一种活动窗口的数据共享装置的结构示意图;
图4是本发明实施例四中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例提供的活动窗口的数据共享方法,可适用于将每个活动窗口页面作用域内的数据进行全局性、独立性和批量化存储的情况,尤其可以用于在Android应用程序中独立存储每个活动窗口页面数据的场景中。该方法可以由活动窗口的数据共享装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在安装有Android应用程序的设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图1,本实施例的方法包括:
S110、依据至少一个待共享数据生成目标共享数据,目标共享数据包含目标键信息和目标值信息,目标值信息的数据结构为预设字符串结构,预设字符串结构包含目标预设分隔符对应的目标分隔符标识及目标预设分隔符。
其中,待共享数据是指目标活动窗口对象作用域内任一组件对象的数据,其需要在目标活动窗口对象作用域内共享,以便同一作用域内其他组件对象可以获取。目标活动窗口对象是指目标活动窗口对应的活动窗口对象。活动窗口对象是指一个活动窗口activity在初始化时构建的相应对象。目标共享数据是指符合数据共享规则的数据,数据共享规则是预先设定的共享规则,例如可以是共享数据的数据类型、数据结构和数据大小等中的任一个或任意组合。键信息是一个字符串类型的数据标识,其可以唯一区分一个数据。值信息是指数据内容本身。目标键信息是目标共享数据对应的数据标识,目标值信息则是目标共享数据中的数据内容,其数据结构是预设字符串结构。
预设字符串结构是指预先设定的字符串的存储结构。示例性地,预设字符串结构包括预设字符串开始符、目标分隔符标识、共享键信息、预设键值连接符、共享值信息、目标预设分隔符和预设字符串结束符。这里,预设字符串开始符和预设字符串结束符分别是预设的能区分一个字符串开始或结束的字符,例如可以是左/右圆括号“(”或“)”、左/右中括号“[”或“]”和左/右花括号“{”或“}”等,为了增加与字符串本体内容之间的区分度,优选分别为左花括号“{”和右花括号“}”。目标分隔符标识是指能够唯一区分目标预设分隔符的标识。预设分隔符是指预先设定的,用于分割字符串中各个具有实际意义的字符的符号,例如可以是艾特符“@”、逗号“,”或斜杠“/”或“\”等。目标预设分隔符是指生成目标共享数据时预设字符串结构中所选用的预设分隔符,其可以是从多个预设分隔符中人为指定,也可以设计筛选算法从多个预设分隔符中自动选定。无论采用何种方式确定目标预设分隔符,其均与预设字符串结构中除目标预设分隔符之外的其他任意字符不重复,即目标预设分隔符区别于预设字符串结构中的其余字符。共享键信息和共享值信息分别是指共享数据的键信息key和值信息value,具体则是指共享数据对应的数据标识和共享数据本身。预设键值连接符是指预先设定的连接键信息和值信息的连接符,例如可以是小破折号“-”或等号“=”等。例如,预设字符串结构可以为:{1key1=value1,key2=value2,key3=value3}。本发明实施例中预设字符串结构的设计是为了提高字符串解析及数据类型转换的速率。预设字符串结构中设置目标预设分隔符和目标分隔符标识的目的,是为了避免预设字符串结构中预设分隔符与共享数据的值信息中字符的冲突,从而构建数据结构稳定性更好的预设字符串结构。
具体地,为了实现多个待共享数据的批量化共享,即批量化地存储至共享区域/共享对象中,本实施例中将多个待共享数据进行封装,并进一步设置为与存储数据的对象数据结构相同的键值对形式,且将目标值信息设置为包含了目标预设分隔符和目标分隔符标识的预设字符串结构,获得一个目标共享数据。
S120、以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。
其中,目标上下文对象是指目标活动窗口对象对应的上下文对象。数据缓存类是预先定义的一个可存储活动窗口作用域内数据的类。数据缓存对象是数据缓存类实例化后的对象,其实例化的时机是与其关联的活动窗口被创建的时机,即在生成活动窗口对象时,生成该活动窗口对象对应的数据缓存对象。这样每个活动窗口对象均对应一个独立的数据缓存对象,以独立存储对应的活动窗口对象的共享数据,避免在同一静态内存中存储多个活动窗口对象的共享数据及共享数据清除不及时而导致脏数据的问题。目标数据缓存对象是与目标活动窗口对象对应的数据缓存对象,用于存储对应目标活动窗口对象的共享数据。
对象获取函数是预先定义的,用于获取目标数据缓存对象的函数。示例性地,对象获取函数具有私有权限修饰符和静态类型修饰符。私有权限修饰符private的设置目的是为了保证只有对象获取函数所属的类及其实例化对象才可访问,即数据缓存类和数据缓存对象可访问;静态类型修饰符static的设置目的是可以直接通过类名进行调用,无需通过对象中转的方式进行调用,进而提高了对象获取函数的访问便捷性。例如对象获取函数可以定义为:private static ActivityCache getActivityCache(Context context){},其表明对象获取函数getActivityCache的输入参数是一个Context类型的上下文对象,函数返回值为一个数据缓存类ActivityCache类型的数据缓存对象。
目标映射关系对象是指存储映射关系的对象。示例性地,目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系。目标映射关系对象用于存储Android客户端中每个活动窗口对象与相应的数据缓存对象之间的一一对应关系。若目标映射关系对象中未存储某个活动窗口对象与数据缓存对象之间的映射关系,则表明该活动窗口对象作用域内的数据未进行存储,从而无法进行共享。示例性地,目标映射关系对象具有私有权限修饰符和静态类型修饰符。私有权限修饰符的设置是保证数据的私密性;静态类型修饰符的设置是使得在多个活动窗口对象被实例化时,在内存中有且只有一个目标映射关系对象,以有效保证全局内存中仅存在一个目标映射关系对象,便于将每个活动窗口对象与数据缓存对象之间的映射关系均存储在同一个目标映射关系对象中。
具体地,将目标上下文对象context作为函数输入参数,通过数据缓存类ActivityCache调用对象获取函数getActivityCache,从而在目标映射关系对象中获取目标上下文对象对应的目标数据缓存对象mActivityCache,即目标活动窗口对象对应的目标数据缓存对象mActivityCache。
示例性地,上述目标映射关系对象的构建步骤包括:在数据缓存类的构造函数中,调用第一初始化子函数,初始化预先定义的第一映射关系对象,获得第二映射关系对象;根据各活动窗口对象对应的上下文对象,调用哈希码值获取子函数,获取各上下文对象的各哈希码值;调用第二映射关系对象中的元素添加函数,将各哈希码值和对应的各数据缓存对象存储至第二映射关系对象,获得目标映射关系对象。其中,哈希码值可以是根据上下文对象的地址、字符串和/或数据确定的整型结构的数值。由于每个活动窗口对象都对应有一个唯一的上下文对象,而上下文对象均具有唯一的一个哈希码值,从而可以利用一个哈希码值来唯一表示一个活动窗口对象。具体地,由于活动窗口对象是一个非常庞大的对象,若直接存储活动窗口对象与数据缓存对象之间的映射关系,则会导致内存压力过大,所以本发明实施例中将映射关系对象的数据结构,设计为存储活动窗口对象对应的哈希码值与数据缓存对象之间的映射关系。这样可以大大减少占用内存空间,从而提高运行速率。并且根据某个活动窗口对象对应的哈希码值,可以更加准确且快速地确定该活动窗口对象对应的数据缓存对象,进而提高对象获取函数的执行效率。例如映射关系对象mProxyMaps可以定义为:private static HashMap<Integer,ActivityCache>mProxyMaps,其数据结构为以键值对Key-Value形式存在的HashMap,键信息用于存放上下文对象的哈希码值;值信息用于存放数据缓存对象。具体实施时,在从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象之前,需要先获取目标映射关系对象,即将每个活动窗口对象与其对应数据缓存对象之间的映射关系存储至目标映射关系对象中。本实施例可以通过mProxyMaps1==null判断映射关系对象mProxyMaps是否为空对象(null对象)。若是,则表明该映射关系对象未被初始化,其引用指向为空,是第一映射关系对象mProxyMaps1,则调用对映射关系对象进行初始化的初始化函数(即第一初始化子函数),对第一映射关系对象mProxyMaps1进行初始化,即mProxyMaps2=new HashMap<Integer,ActivityCache>,获得第二映射关系对象mProxyMaps2。若否,则说明该映射关系对象已经是第二映射关系对象mProxyMaps2。然后,分别以每个活动窗口对象对应的上下文对象为函数输入参数,调用哈希码值获取子函数context.hashCode(),获取每个上下文对象的哈希码值。之后,分别调用元素添加函数mProxyMaps2.put(code,ActivityCache),将每个哈希码值及其对应的数据缓存对象添加至第二映射关系对象mProxyMaps2中,获得目标映射关系mProxyMaps。需要说明的是,映射关系对象定义在数据缓存类中,故上述对映射关系对象进行初始化的过程在数据缓存类ActivityCache的构造函数中实现。
示例性地,对象获取函数的功能实现步骤包括:判断对象获取函数的输入参数是否为空对象;若否,则通过目标上下文对象,调用哈希码值获取子函数,获取目标上下文对象的目标哈希码值;以目标哈希码值为函数输入参数,调用目标映射关系对象中的对象获取子函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。其中,目标哈希码值是指目标活动窗口对象对应的哈希码值。具体地,对象获取函数内部,首先判定对象获取函数的输入参数context是否为空对象null。若否,则认为对象获取函数的输入参数为目标上下文对象context。通过目标上下文对象调用哈希码值获取子函数context.hashCode(),获取目标上下文对象对应的目标哈希码值code。之后,以目标哈希码值code为对象获取子函数的输入参数,通过目标映射关系对象调用对象获取子函数mProxyMaps.get(code),从目标映射关系对象中获取目标哈希码值对应的目标数据缓存对象。若函数输入参数context为空对象,则认为对象获取函数的输入参数错误,无法从目标映射关系对象中获取目标数据缓存对象。
S130、调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中。
其中,数据存储函数是预先定义的,用于将目标共享数据存储至目标数据缓存对象中的目标数据对象中的函数。示例性地,数据存储函数setData定义为:public voidsetData(String key,String value),其输入参数设定为一个字符串String类型的键信息key和一个字符串String类型的值信息value,与后续的目标数据对象的数据结构相对应,以便于进行数据的存储操作。数据对象是预先定义的存储数据的对象。目标数据对象则是用于存储目标共享数据的数据对象,其数据类型定义为诸如map和set等数据类型的键值对数据结构,并且键值对数据结构中的键的类型(即键类型)和值的类型(即值类型)均定义为字符串string类型。示例性地,目标数据对象dataMap可以定义为:private HashMap<String,String>dataMap,其具有私有权限修饰符private,以便防止除数据缓存类之外的其他类直接访问dataMap,从而可以有效保护dataMap的数据信息。
具体地,目标活动窗口中的任一组件对象都可以通过调用目标缓存对象中的数据存储函数,将自身组件数据(多个待共享数据)以具有预设字符串结构的目标共享数据的形式存储至目标数据对象中,以实现数据仅能在目标活动窗口的作用域内进行共享,非目标活动窗口中的组件不能共享目标活动窗口对应的目标数据对象中的数据,从而在切换目标活动窗口页面时,切换后的目标活动窗口页面无法共享切换前的活动窗口页面数据,即目标活动窗口页面没有对应的脏数据,进而防止将切换前的活动窗口页面的脏数据显示在目标活动窗口页面上,避免了对目标活动窗口页面造成影响。
示例性地,数据存储函数的功能实现步骤包括:判断目标数据缓存对象中的目标数据对象是否为空对象;若是,则调用第二初始化子函数,初始化预先定义的初始数据对象,获得目标数据对象;依据待共享数据,调用目标数据对象中的数据存储子函数,将待共享数据存储至目标数据缓存对象中的目标数据对象中。具体地,在数据存储函数内部,首先判断目标数据缓存对象中的目标数据对象dataMap是否为空对象null,以增强程序的健壮性。若是,则表明该目标数据对象的引用指向为空,此时调用对目标数据对象进行初始化的初始化函数(即第二初始化子函数),对预先定义的初始数据对象dataMap1进行初始化data1Map=new HashMap<String,String>(),获得目标数据对象dataMap。若否,则表明已对dataMap进行初始化和实例化,直接将初始数据对象dataMap1确定为目标数据对象dataMap。之后,通过目标数据对象调用数据存储子函数dataMap.put(key,value),将字符串类型的目标共享数据以key和value的形式存储至目标数据对象dataMap中。由于数据对象dataMap定义在数据缓存类中,故上述对数据对象进行初始化的过程在数据缓存类ActivityCache的构造函数中实现,从而可以保证一个数据缓存类只对应一个目标数据对象dataMap。
本实施例的技术方案,通过预先为每个活动窗口对象设置一个独立的数据缓存对象,以存储对应活动窗口对象作用域内的共享数据,避免了在同一静态内存中存储多个活动窗口对象的共享数据,为各个活动窗口对象进行独立的数据共享提供数据存储基础。通过依据至少一个待共享数据生成具有预设字符串结构的一个目标共享数据,为实现批量化的数据共享提供数据结构基础。通过在预设字符串结构中设置目标预设分隔符和目标分隔符标识,提高目标共享数据在类型转换过程中的数据完整性与正确性。通过预先建立每个活动窗口对象与数据缓存对象之间的映射关系,并将该映射关系存储至目标映射关系对象中,以映射关系对象的方式,维护活动窗口对象与其对应的数据缓存对象之间的关联性,以使得数据缓存对象的生命周期与对应的活动窗口对象的生命周期一致,为各个活动窗口对象进行独立的数据共享提供数据释放基础。通过调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中。实现了更加精确且快速地进行Android系统中活动窗口页面作用域内批量数据的共享,使得在Activity页面切换时,切换后Activity页面对应的共享数据独立于切换前Activity页面对应的共享数据,从而有效避免了切换前Activity页面的脏数据对切换后Activity页面造成影响。
在上述技术方案的基础上,本实施例中的活动窗口的数据共享方法还包括:在目标活动窗口销毁时,以目标上下文对象为函数输入参数,调用目标数据缓存对象中的对象释放函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。其中,对象释放函数是预先定义的,用于释放目标活动窗口作用域内数据的函数。示例性地,对象释放函数releaseActivity可以定义为:public void releaseActivity(Context context),其具有公有权限修饰符public,输入参数为一个Context类型的上下文对象。具体地,当目标活动窗口页面进行切换时,需将目标活动窗口进行销毁,即执行目标活动窗口的生命周期结束函数onDestroy。在onDestroy函数作用域内,将目标上下文对象作为函数输入参数,通过调用目标数据缓存对象中的对象释放函数releaseActivity,删除目标映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。这样,目标数据缓存对象便被释放,其内存储的目标活动窗口作用域内的共享数据也被相应地释放。
示例性地,对象释放函数的功能实现步骤包括:判断对象释放函数的输入参数是否为空对象;若否,则通过目标上下文对象,调用哈希码值获取子函数,获取目标上下文对象的目标哈希码值;以目标哈希码值为函数输入参数,调用对象释放子函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。具体地,对象释放函数内部先判定对象获取函数的输入参数context是否为空对象null。若是,则认为函数输入参数错误,无需执行释放操作。若否,则认为对象获取函数的输入参数为目标上下文对象context,此时通过目标上下文对象调用哈希码值获取子函数context.hashCode(),获取目标哈希码值code。之后,以目标希码值code为输入参数,调用对象释放子函数mProxyMaps.remove(code),从目标映射关系对象mProxyMaps中删除目标活动窗口对象与目标数据缓存对象之间的映射关系,从而达到及时释放目标活动窗口对应的共享数据的效果。
实施例二
本实施例在上述实施例一的基础上,对“依据至少一个待共享数据生成目标共享数据”进行了进一步优化。在此基础上,增加了确定目标预设分隔符和目标分隔符标识的步骤。在上述基础上,还可以增加从目标数据缓存对象中获取共享数据的步骤。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的活动窗口的数据共享方法包括:
S201、依据至少一个待共享数据,构建键值映射的map对象。
具体地,为了便于后续的字符串拼接操作,需要将待共享数据存储为键和值一一映射的map对象。将至少一个待共享数据解析为键值对形式,即根据每个待共享数据确定其对应的共享键信息,并将待共享数据作为相应的共享值信息。之后,基于map类创建一个初始map对象,并通过初始map对象的元素插入函数map.put(key,value),将各个共享键信息和对应的各个共享值信息插入初始map对象,获得最终的map对象。当然,为了便于数据管理,也可以先将待共享数据构建为JavaBean对象,再由JavaBean对象构建map对象。
示例性地,S201包括:依据至少一个待共享数据,获得待共享JavaBean对象;调用待共享JavaBean对象的属性读取函数,获得待共享JavaBean对象中的bean键信息和对应的bean值信息;依据bean键信息和bean值信息,构建map对象。其中,bean键信息和bean值信息分别是指JavaBean对象中属性信息的数据标识及其对应的数据内容。具体地,按照Android系统提供的数据管理类JavaBean创建并初始化一个初始JavaBean对象。然后,依据多个待共享数据,分别定义相应的属性读取函数Get*和属性写入函数Set*,*表示共享键信息。之后,分别调用各个待共享数据对应的Set*函数,将多个共享值信息全部存储到初始JavaBean对象中,从而获得包含所有待共享数据的待共享JavaBean对象。这样设置的好处在于利用Android系统统一的数据管理方式,方便对待共享数据进行统一的存储及获取等操作。为了构建map对象,需要调用待共享JavaBean对象的属性读取函数Get*,从待共享JavaBean对象获得各个共享键信息和共享值信息,为了区分,也可称为bean键信息和bean值信息。然后,通过初始map对象的元素插入函数map.put(key,value),将各个bean键信息和对应的各个bean值信息插入初始map对象,获得最终的map对象。
S202、调用map对象的数据获取函数,获得map对象的各map键信息和各map值信息。
其中,数据获取函数是指map对象中获取map键信息和map值信息的函数,如getKey和getValue。map键信息和map值信息分别是指map对象中的数据标识和数据内容。
具体地,为了进行字符串操作,需先从map对象中获取其内具体数据。具体实施时,是通过调用map对象的数据获取函数getKey和getValue,从map对象中获取各个map键信息和对应的各个map值信息。这些信息既可以用于后续自动确定目标预设分隔符,也可以用于后续构建预设字符串结构的目标值信息。
S203、依据各map值信息和初始预设分隔符集合确定目标预设分隔符集合。
其中,预设分隔符集合是预先确定的一个用于存储预设分隔符的集合。示例性地,预设分隔符集合包括至少一个预设分隔符和预设分隔符对应的分隔符标识。该预设分隔符集合中的预设分隔符可以包含各种特殊符号,例如“@”、“:”、“/”、“\”和“~”等,而每个预设分隔符都设置有一个唯一的标识符,即分隔符标识。初始预设分隔符集合是指最初确定的,包含预设分隔符数量较多的预设分隔符集合。目标预设分隔符集合是指最终确定的,包含至少一个可用于构建目标值信息的预设分隔符集合。
具体地,由于map键信息内不包含特殊符号,故map键信息中不会存在与预设分隔符重复的字符。所以,本发明实施例中,只需从初始预设分隔符集合中排除掉map值信息中的相同字符,即可得到目标预设分隔符集合。
示例性地,S203包括:比较各map值信息与初始预设分隔符集合中的各预设分隔符,确定各map值信息与各预设分隔符之间是否有相同字符;若有,则从初始预设分隔符集合中删除相同字符及相同字符对应的分隔符标识,获得目标预设分隔符集合;若没有,则将初始预设分隔符集合确定为目标预设分隔符集合。具体地,将各个map值信息中的字符和初始预设分隔符集合中的各个分隔符进行比较。如果比较结果是初始预设分隔符集合中包含与map值信息中字符相同的字符,那么从初始预设分隔符集合中删除上述相同字符及其对应的分隔符标识,此时,初始预设分隔符集合中剩余的预设分隔符及其分隔符标识所构成的集合便是目标预设分隔符集合。若果比较结果是初始预设分隔符集合中没有与map值信息中字符相同的字符,那么可直接将初始预设分隔符集合确定为目标预设分隔符集合。
S204、依据目标预设分隔符集合,确定目标预设分隔符和目标分隔符标识。
具体地,目标值信息的构建过程中只需要一个预设分隔符,故需从目标预设分隔符集合中选定一个预设分隔符作为目标预设分隔符(如“,”),目标预设分隔符对应的分隔符标识便是目标分隔符标识(如“1”)。从目标预设分隔符集合中选定目标预设分隔符的规则可以是顺序规则,也可以是随机规则。
S205、调用预先创建的初始字符串生成器对象的字符串拼接函数,按照预设字符串结构,连接预设字符串开始符、目标分隔符标识、各map键信息、预设键值连接符、各map值信息、目标预设分隔符和预设字符串结束符,获得目标字符串生成器对象,作为目标共享数据中的目标值信息。
其中,字符串生成器对象是对Android系统提供的字符串生成器类StringBuilder实例化之后的对象,其是一个长度可变的字符串序列对象。初始字符串生成器对象builder是指定义并初始化之后的字符串生成器对象,其初始化过程可以为StringBuilderbuilder=new StringBuilder()。字符串拼接函数是字符串生成器对象中自带的连接各个短字符串的函数,其函数返回值为一个string类型的长字符串。目标字符串生成器对象是指对初始字符串生成器对象赋值之后的字符串生成器对象。
具体地,为了便于程序开发,本实施例中以循环方式进行各个短字符串信息的拼接。循环体内部的操作为:调用初始字符串生成器对象builder的字符串拼接函数append,按照预设字符串结构,顺次连接预设字符串开始符、目标分隔符标识、各map键信息、预设键值连接符、各map值信息、目标预设分隔符和预设字符串结束符。按照上述过程,便可获得目标字符串生成器对象,作为目标共享数据中的目标值信息。需要说明的是,由于目标字符串生成器对象中的长字符串中,只能包含一个预设字符串开始符和一个预设字符串结束符,所以,在循环体内部,需要判断字符串拼接是否是第一个字符串,若是,则需在字符串开始位置添加预设字符串开始符;同时,需要判断字符串拼接是否是最后一个字符串,若是则需在字符串最后的结尾位置添加预设字符串结束符。以map对象中自有的数据遍历逻辑为例,每次循环时,需要通过map元素索引值index判断其是否是第一个或最后一个map元素。若否,则直接调用builder.append进行字符串拼接;若是第一个map元素,则在builder中的字符串开始位置添加预设字符串开始符;若是最后一个map元素,则删除builder中字符串结尾位置上的预设分隔符,并在相应位置添加预设字符串结束符。
示例性地,S250包括:从各map键信息和各map值信息中,确定当前map键信息和当前map值信息;调用字符串拼接函数,按照预设字符串结构,连接历史拼接字符串、当前map键信息、预设键值连接符、当前map值信息和目标预设分隔符,获得当前拼接字符串;将下一个map键信息和map值信息更新为当前map键信息和当前map值信息,将当前拼接字符串更新为历史拼接字符串,并返回执行调用字符串拼接函数的步骤,直至遍历完map对象,获得第一中间字符串生成器对象;调用第一中间字符串生成器对象的字符删除函数,删除第一中间字符串生成器对象中的最后一个字符,获得第二中间字符串生成器对象;分别调用第二中间字符串生成器对象的字符插入函数,在第二中间字符串生成器对象中的字符串起始位置,添加预设字符串开始符和目标分隔符标识,在第二中间字符串生成器对象中的字符串结尾位置,添加预设字符串结束符,获得目标字符串生成器对象。
其中,历史拼接字符串是指在进行当前字符串拼接操作之前,拼接而成的长字符串,其是字符串生成器对象中的存储数据。当前拼接字符串是指执行当前字符串拼接操作之后,拼接而成的长字符串。
具体地,由于本操作之前已经获得了map对象的各个map键信息和各个map值信息,故只需从上述数据中确定一个当前map键信息(如“key1”)和对应的当前map值信息(如“value1”),以开始循环体操作。在循环体内部,调用初始字符串生成器对象builder的字符串拼接函数append,顺次拼接历史拼接字符串(首次为空)、当前map键信息key1、预设键值连接符(如“=”)、当前map值信息value1和目标预设分隔符(如“,”),代码实现可以为builder.append("key1").append("=").append("value1").append(","),获得当前拼接字符串“key1=value1,”。然后,进行下一次循环操作,也就是将各map键信息和各map值信息中的顺次下一个map键信息和对应的map值信息更新为当前map键信息(如“key2”)和对应的当前map值信息(如“value2”),同时将之前获得的当前拼接字符串更新为历史拼接字符串,即此时历史拼接字符串为“key1=value1,”。之后,通过上述循环体中的操作说明可知,会生成当前拼接字符串“key1=value1,key2=value2,”。按照上述循环过程,遍历完整个map对象中的数据后,可以获得一个将map对象中所有的map键信息和map值信息都拼接起来的当前拼接字符串,如“key1=value1,key2=value2,key3=value3,”,而该当前拼接字符串则存储于循环体的生成结果——第一中间字符串生成器对象。
循环操作之后,调用第一中间字符串生成器对象的字符删除函数delete(intstartIndex,int endIndex),删除第一中间字符串生成器对象中存储的拼接字符串的最后一个字符“,”,获得第二中间字符串生成器对象,其内的拼接字符串为“key1=value1,key2=value2,key3=value3”。然后,调用第二中间字符串生成器对象的字符插入函数insert(int offset,Char c),分别在第二中间字符串生成器对象中拼接字符串的起始位置添加预设字符串开始符“{”和目标分隔符标识“1”,此时的拼接字符串为“{1key1=value1,key2=value2,key3=value3”。之后,再调用第二中间字符串生成器对象的字符插入函数insert(int offset,Char c),在上次所得的拼接字符串的结尾位置添加预设字符串结束符“}”,获得最终的拼接字符串“{1key1=value1,key2=value2,key3=value3}”,其存储于目标字符串生成器对象builder中,至此获得了目标字符串生成器对象。这样设置的好处在于简化循环体中的操作流程,提高循环操作的执行效率,从而更加快速地实现字符串类型转换,降低系统内存开销。
当然,也可以将从map对象中获取各map键信息和各map值信息的过程加入上述循环体中,每循环一次获得一个map键信息和map值信息,并进行一次字符串拼接获得一个拼接字符串。这样可以节省map对象中数据的存储空间。
S206、依据目标值信息,确定目标共享数据中的目标键信息。
具体地,生成了具有预设字符串结构的目标值信息之后,可以按照生成一个数据的唯一标识的方法生成目标键信息,则目标键信息和目标值信息构成目标共享数据。
S207、以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象。
S208、调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中。
S209、以目标获取数据对应的数据标识为函数输入参数,调用目标数据缓存对象中的数据读取函数,从目标数据对象中读取目标获取数据对应的初始获取数据。
其中,目标获取数据是指需要从目标活动窗口对象对应的共享数据中读取的数据,且其数据类型为JavaBean对象。数据读取函数是预先定义的,用于根据数据标识从目标数据对象中读取数据的函数。示例性地,数据读取函数getData可以定义为public StringgetData(String key),其具有公有权限修饰符public,且可返回字符串String类型的数据。初始获取数据是指从目标数据对象中直接获取的数据。根据上述各实施例的说明可知,目标数据对象dataMap中存储的值信息的数据类型为预设字符串结构的字符串类型,故初始获取数据为预设字符串结构的数据。
具体地,将目标获取数据对应的字符串String类型的数据标识作为数据读取函数getData的输入参数key,通过调用getData,从目标数据对象中获取该数据标识key对应的初始获取数据。在本实施例中,目标活动窗口中的任一组件均可以通过调用数据读取函数来读取目标数据对象中的共享数据,而无法读取非目标数据对象中的数据,从而可以限制数据只能在目标活动窗口的作用域内进行共享,进而避免其他活动窗口页面显示目标活动窗口页面的数据。
示例性地,数据读取函数的功能实现步骤包括:判断数据读取函数的输入参数是否为空对象;若否,则以目标获取数据对应的数据标识为函数输入参数,调用数据读取子函数,从目标数据对象中读取待获取数据。具体地,数据读取函数内部先判断确定数据读取函数的输入参数是否为空对象null。若否,则认为函数输入参数为目标获取数据的数据标识key。此时,以该数据标识为数据读取子函数的输入参数,通过目标数据对象调用数据读取子函数dataMap.get(key),从目标数据对象dataMap中读取数据标识key对应的值信息,将其作为初始获取数据。若是,则认为数据读取函数的输入参数错误,无需执行操作。
S210、以初始获取数据为函数输入参数,调用JavaBean类型转换函数,将初始获取数据转换为JavaBean对象,获得目标获取数据。
具体地,通过预先定义的JavaBean类型转换函数,将初始获取数据由字符串类型转换为JavaBean对象,作为目标获取数据。其中的JavaBean类型转换函数的实现为:通过预设字符串开始符“{”和预设字符串结束符“}”,从初始获取数据中得到包含实际数据的目标拼接字符串“1key1=value1,key2=value2,key3=value3”。然后,通过目标拼接字符串起始位置的目标分割符标识“1”确定出目标预设分隔符“,”。然后,先后以预设字符分割符“,”和预设键值连接符“=”为分割标识,进行字符串解析,并最终获得各个键信息key1、key2和key3,以及对应的值信息value1、value2和value3。之后,通过JavaBean对象的各个Set*函数,将上述键信息和值信息存储至JavaBean对象,获得目标获取数据。
本实施例的技术方案,通过依据至少一个待共享数据生成JavaBean对象,能够实现多个待共享数据的统一管理,从而减少后续字符串类型转换的操作次数,进而提高数据类型转换速率。通过依据各map值信息和初始预设分隔符集合,确定目标预设分隔符集合,并进一步确定目标预设分隔符和目标分隔符标识,能够使得目标共享数据中的预设分隔符有更强的辨识度,从而提高后续共享数据解析的正确性。通过初始字符串生成器对象的字符串拼接函数,按照预设字符串结构,连接预设字符串开始符、目标分隔符标识、各map键信息、预设键值连接符、各map值信息、目标预设分隔符和预设字符串结束符,获得目标字符串生成器对象,并获得目标共享数据。实现了快速地将JavaBean对象转换为一个自定义的string对象,便于后续目标活动窗口对象中共享数据的存储,从而进一步提高活动窗口页面作用域内批量数据的共享效率。
实施例三
本实施例提供一种活动窗口的数据共享装置,该装置与上述各实施例的活动窗口的数据共享方法属于同一个发明构思,参见图3,该装置具体包括:
目标共享数据生成模块310,用于依据至少一个待共享数据生成目标共享数据,目标共享数据包含目标键信息和目标值信息,目标值信息的数据结构为预设字符串结构,预设字符串结构包含目标预设分隔符对应的目标分隔符标识及目标预设分隔符;
目标数据缓存对象获取模块320,用于以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取目标活动窗口对象对应的目标数据缓存对象,目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,且具有私有权限修饰符和静态类型修饰符;
共享数据存储模块330,用于调用目标数据缓存对象中的数据存储函数,将目标共享数据存储至目标数据缓存对象中的目标数据对象中,目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。
可选地,目标共享数据生成模块310包括:
map对象构建子模块,用于依据至少一个待共享数据,构建键值映射的map对象;
map键值信息获取子模块,用于调用map对象的数据获取函数,获得map对象的各map键信息和各map值信息;
目标值信息确定子模块,用于调用预先创建的初始字符串生成器对象的字符串拼接函数,按照预设字符串结构,连接预设字符串开始符、目标分隔符标识、各map键信息、预设键值连接符、各map值信息、目标预设分隔符和预设字符串结束符,获得目标字符串生成器对象,作为目标共享数据中的目标值信息;
目标键信息确定子模块,用于依据目标值信息,确定目标共享数据中的目标键信息。
可选地,在上述装置的基础上,该装置还包括目标预设分隔符确定模块,目标预设分隔符确定模块包括:
目标预设分隔符集合确定子模块,用于在调用map对象的数据获取函数,获得map对象的各map键信息和各map值信息之后,依据各map值信息和初始预设分隔符集合,确定目标预设分隔符集合,其中,预设分隔符集合包括至少一个预设分隔符和预设分隔符对应的分隔符标识;
目标预设分隔符确定子模块,用于依据目标预设分隔符集合,确定目标预设分隔符和目标分隔符标识。
其中,目标预设分隔符集合确定子模块具体用于:
比较各map值信息与初始预设分隔符集合中的各预设分隔符,确定各map值信息与各预设分隔符之间是否有相同字符;
若有,则从初始预设分隔符集合中删除相同字符及相同字符对应的分隔符标识,获得目标预设分隔符集合;
若没有,则将初始预设分隔符集合确定为目标预设分隔符集合。
可选地,map对象构建子模块具体用于:
依据至少一个待共享数据,获得待共享JavaBean对象;
调用待共享JavaBean对象的属性读取函数,获得待共享JavaBean对象中的bean键信息和对应的bean值信息;
依据bean键信息和bean值信息,构建map对象。
可选地,目标值信息确定子模块具体用于:
从各map键信息和各map值信息中,确定当前map键信息和当前map值信息;
调用字符串拼接函数,按照预设字符串结构,连接历史拼接字符串、当前map键信息、预设键值连接符、当前map值信息和目标预设分隔符,获得当前拼接字符串;
将下一个map键信息和map值信息更新为当前map键信息和当前map值信息,将当前拼接字符串更新为历史拼接字符串,并返回执行调用字符串拼接函数的步骤,直至遍历完map对象,获得第一中间字符串生成器对象;
调用第一中间字符串生成器对象的字符删除函数,删除第一中间字符串生成器对象中的最后一个字符,获得第二中间字符串生成器对象;
分别调用第二中间字符串生成器对象的字符插入函数,在第二中间字符串生成器对象中的字符串起始位置,添加预设字符串开始符和目标分隔符标识,在第二中间字符串生成器对象中的字符串结尾位置,添加预设字符串结束符,获得目标字符串生成器对象。
可选地,在上述装置的基础上,该装置还包括数据释放模块,用于:
在目标活动窗口销毁时,以目标上下文对象为函数输入参数,调用目标数据缓存对象中的对象释放函数,删除映射关系对象中的目标数据缓存对象与目标活动窗口对象之间的映射关系。
通过本发明实施例三的一种活动窗口的数据共享装置,以更加精确且快速地实现Android系统中活动窗口页面作用域内批量数据的共享,有效避免了切换前活动窗口页面的脏数据对切换后活动窗口页面造成影响。
本发明实施例所提供的活动窗口的数据共享装置可执行本发明任意实施例所提供的活动窗口的数据共享方法,具备执行方法相应的功能模块和有益效果。
实施例四
参见图4,本实施例提供了一种设备400,其包括:一个或多个处理器420;存储装置410,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器420执行,使得一个或多个处理器420实现本发明任意实施例所提供的活动窗口的数据共享方法的技术方案。
图4显示的设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图4所示,该设备400包括处理器420、存储装置410、输入装置430和输出装置440;设备中处理器420的数量可以是一个或多个,图4中以一个处理器420为例;设备中的处理器420、存储装置410、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线450连接为例。
存储装置410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的活动窗口的数据共享方法对应的程序指令/模块(例如,活动窗口的数据共享装置中的目标共享数据生成模块、目标数据缓存对象获取模块和共享数据存储模块)。存储装置410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行本发明任意实施例所提供的活动窗口的数据共享方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的活动窗口的数据共享方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种活动窗口的数据共享方法,其特征在于,包括:
依据至少一个待共享数据生成目标共享数据,所述目标共享数据包含目标键信息和目标值信息,所述目标值信息的数据结构为预设字符串结构,所述预设字符串结构包含目标预设分隔符对应的目标分隔符标识及所述目标预设分隔符;
以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,且具有私有权限修饰符和静态类型修饰符;
调用所述目标数据缓存对象中的数据存储函数,将所述目标共享数据存储至所述目标数据缓存对象中的目标数据对象中,所述目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。
2.根据权利要求1所述的方法,其特征在于,所述依据至少一个待共享数据生成目标共享数据包括:
依据至少一个所述待共享数据,构建键值映射的map对象;
调用所述map对象的数据获取函数,获得所述map对象的各map键信息和各map值信息;
调用预先创建的初始字符串生成器对象的字符串拼接函数,按照所述预设字符串结构,连接预设字符串开始符、所述目标分隔符标识、各所述map键信息、预设键值连接符、各所述map值信息、目标预设分隔符和预设字符串结束符,获得目标字符串生成器对象,作为所述目标共享数据中的目标值信息;
依据所述目标值信息,确定所述目标共享数据中的所述目标键信息。
3.根据权利要求2所述的方法,其特征在于,在所述调用所述map对象的数据获取函数,获得所述map对象的各map键信息和各map值信息之后,还包括:
依据各所述map值信息和初始预设分隔符集合,确定目标预设分隔符集合,其中,预设分隔符集合包括至少一个预设分隔符和所述预设分隔符对应的分隔符标识;
依据所述目标预设分隔符集合,确定所述目标预设分隔符和所述目标分隔符标识。
4.根据权利要求3所述的方法,其特征在于,所述依据各所述map值信息和初始预设分隔符集合,确定目标预设分隔符集合包括:
比较各所述map值信息与所述初始预设分隔符集合中的各所述预设分隔符,确定各所述map值信息与各所述预设分隔符之间是否有相同字符;
若有,则从所述初始预设分隔符集合中删除所述相同字符及所述相同字符对应的分隔符标识,获得所述目标预设分隔符集合;
若没有,则将所述初始预设分隔符集合确定为所述目标预设分隔符集合。
5.根据权利要求2所述的方法,其特征在于,所述依据至少一个所述待共享数据,构建键值映射的map对象包括:
依据至少一个所述待共享数据,获得待共享JavaBean对象;
调用所述待共享JavaBean对象的属性读取函数,获得所述待共享JavaBean对象中的bean键信息和对应的bean值信息;
依据所述bean键信息和所述bean值信息,构建所述map对象。
6.根据权利要求2所述的方法,其特征在于,所述调用预先创建的初始字符串生成器对象的字符串拼接函数,按照所述预设字符串结构,连接预设字符串开始符、所述目标分隔符标识、各所述map键信息、预设键值连接符、各所述map值信息、目标预设分隔符和预设字符串结束符,获得目标字符串生成器对象包括:
从各所述map键信息和各所述map值信息中,确定当前map键信息和当前map值信息;
调用所述字符串拼接函数,按照所述预设字符串结构,连接历史拼接字符串、所述当前map键信息、预设键值连接符、所述当前map值信息和所述目标预设分隔符,获得当前拼接字符串;
将下一个map键信息和map值信息更新为当前map键信息和当前map值信息,将当前拼接字符串更新为历史拼接字符串,并返回执行所述调用所述字符串拼接函数的步骤,直至遍历完所述map对象,获得第一中间字符串生成器对象;
调用所述第一中间字符串生成器对象的字符删除函数,删除所述第一中间字符串生成器对象中的最后一个字符,获得第二中间字符串生成器对象;
分别调用所述第二中间字符串生成器对象的字符插入函数,在所述第二中间字符串生成器对象中的字符串起始位置,添加所述预设字符串开始符和所述目标分隔符标识,在所述第二中间字符串生成器对象中的字符串结尾位置,添加所述预设字符串结束符,获得所述目标字符串生成器对象。
7.根据权利要求1所述的方法,其特征在于,还包括:
在所述目标活动窗口销毁时,以所述目标上下文对象为函数输入参数,调用所述目标数据缓存对象中的对象释放函数,删除所述映射关系对象中的所述目标数据缓存对象与所述目标活动窗口对象之间的映射关系。
8.一种活动窗口的数据共享装置,其特征在于,包括:
目标共享数据生成模块,用于依据至少一个待共享数据生成目标共享数据,所述目标共享数据包含目标键信息和目标值信息,所述目标值信息的数据结构为预设字符串结构,所述预设字符串结构包含目标预设分隔符对应的目标分隔符标识及所述目标预设分隔符;
目标数据缓存对象获取模块,用于以目标活动窗口对象对应的目标上下文对象为函数输入参数,通过数据缓存类调用对象获取函数,从目标映射关系对象中获取所述目标活动窗口对象对应的目标数据缓存对象,所述目标映射关系对象用于存储活动窗口对象与数据缓存对象之间的映射关系,且具有私有权限修饰符和静态类型修饰符;
共享数据存储模块,用于调用所述目标数据缓存对象中的数据存储函数,将所述目标共享数据存储至所述目标数据缓存对象中的目标数据对象中,所述目标数据对象的数据结构为键值对数据结构,且键类型和值类型均为字符串类型。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的活动窗口的数据共享方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的活动窗口的数据共享方法。
CN201810804480.5A 2018-07-20 2018-07-20 活动窗口的数据共享方法、装置、设备及存储介质 Active CN109144633B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810804480.5A CN109144633B (zh) 2018-07-20 2018-07-20 活动窗口的数据共享方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810804480.5A CN109144633B (zh) 2018-07-20 2018-07-20 活动窗口的数据共享方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN109144633A true CN109144633A (zh) 2019-01-04
CN109144633B CN109144633B (zh) 2021-09-07

Family

ID=64801369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810804480.5A Active CN109144633B (zh) 2018-07-20 2018-07-20 活动窗口的数据共享方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN109144633B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110324722A (zh) * 2019-07-02 2019-10-11 武汉斗鱼鱼乐网络科技有限公司 直播间中数据的获取方法、装置、设备和存储介质
CN110457132A (zh) * 2019-08-01 2019-11-15 武汉斗鱼鱼乐网络科技有限公司 一种功能对象的创建方法、装置和终端设备
CN111274051A (zh) * 2020-01-19 2020-06-12 中信银行股份有限公司 数据的处理方法、装置、电子设备及计算机可读存储介质
CN113971057A (zh) * 2020-07-22 2022-01-25 北京奇虎科技有限公司 页面组件信息缓存方法、装置、设备及存储介质

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651760A (zh) * 2008-08-14 2010-02-17 索尼爱立信移动通讯有限公司 通话过程中的信息共享
US20110078249A1 (en) * 2009-09-28 2011-03-31 International Business Machines Corporation Shared address collectives using counter mechanisms
US20110126181A1 (en) * 2004-09-13 2011-05-26 The Mathworks, Inc. Methods and System for Executing a Program in Multiple Execution Environments
CN102567108A (zh) * 2010-11-15 2012-07-11 微软公司 快速数据共享
CN102855615A (zh) * 2012-08-08 2013-01-02 福建天晴在线互动科技有限公司 一种实现gui资源重复利用的方法
CN103530125A (zh) * 2013-10-18 2014-01-22 金蝶软件(中国)有限公司 一种数据共享方法及系统、窗口的控制单元
CN103761083A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 一种数据分享方法、装置及终端
CN104023069A (zh) * 2014-06-13 2014-09-03 可牛网络技术(北京)有限公司 一种信息分享方法和设备
US20160196217A1 (en) * 2015-01-07 2016-07-07 International Business Machines Corporation Updatable Address Lookup Application Program Interface
US20170185424A1 (en) * 2014-10-10 2017-06-29 Adp, Llc Centralized application programming interface monitoring tool
US20170223073A1 (en) * 2013-02-19 2017-08-03 Amazon Technologies, Inc. Application programming interface for a sharing service
CN107209773A (zh) * 2015-02-20 2017-09-26 惠普发展公司,有限责任合伙企业 自动调用统一的可视化界面
CN107623714A (zh) * 2017-07-28 2018-01-23 平安科技(深圳)有限公司 数据共享方法、装置及计算机可读存储介质
CN107704167A (zh) * 2017-09-15 2018-02-16 珠海格力电器股份有限公司 一种数据分享方法、装置及电子设备
CN108093197A (zh) * 2016-11-21 2018-05-29 阿里巴巴集团控股有限公司 用于信息分享的方法、系统及机器可读介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110126181A1 (en) * 2004-09-13 2011-05-26 The Mathworks, Inc. Methods and System for Executing a Program in Multiple Execution Environments
CN101651760A (zh) * 2008-08-14 2010-02-17 索尼爱立信移动通讯有限公司 通话过程中的信息共享
US20110078249A1 (en) * 2009-09-28 2011-03-31 International Business Machines Corporation Shared address collectives using counter mechanisms
CN102567108A (zh) * 2010-11-15 2012-07-11 微软公司 快速数据共享
CN102855615A (zh) * 2012-08-08 2013-01-02 福建天晴在线互动科技有限公司 一种实现gui资源重复利用的方法
US20170223073A1 (en) * 2013-02-19 2017-08-03 Amazon Technologies, Inc. Application programming interface for a sharing service
CN103530125A (zh) * 2013-10-18 2014-01-22 金蝶软件(中国)有限公司 一种数据共享方法及系统、窗口的控制单元
CN103761083A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 一种数据分享方法、装置及终端
CN104023069A (zh) * 2014-06-13 2014-09-03 可牛网络技术(北京)有限公司 一种信息分享方法和设备
US20170185424A1 (en) * 2014-10-10 2017-06-29 Adp, Llc Centralized application programming interface monitoring tool
US20160196217A1 (en) * 2015-01-07 2016-07-07 International Business Machines Corporation Updatable Address Lookup Application Program Interface
CN107209773A (zh) * 2015-02-20 2017-09-26 惠普发展公司,有限责任合伙企业 自动调用统一的可视化界面
CN108093197A (zh) * 2016-11-21 2018-05-29 阿里巴巴集团控股有限公司 用于信息分享的方法、系统及机器可读介质
CN107623714A (zh) * 2017-07-28 2018-01-23 平安科技(深圳)有限公司 数据共享方法、装置及计算机可读存储介质
CN107704167A (zh) * 2017-09-15 2018-02-16 珠海格力电器股份有限公司 一种数据分享方法、装置及电子设备

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
GODLINESS: "Android之不要滥用SharedPreferences", 《HTTPS://WWW.JIANSHU.COM/P/8EB2147C328B/》 *
JUNAQIAN: "SharePreference+序列化存储对象", 《HTTPS://BLOG.CSDN.NET/JUNAQIAN/ARTICLE/DETAILS/53112889》 *
JZP12: "android之activity之间共享数据 startActivityForRes", 《HTTPS://BLOG.CSDN.NET/JZP12/ARTICLE/DETAILS/7611114》 *
YUMINFENG728: "Android数据存储之SharedPreferences详解", 《HTTPS://BLOG.CSDN.NET/YUMINFENG728/ARTICLE/DETAILS/51384493》 *
甄情: "android:Activity数据传递之全局对象(application)", 《HTTPS://BLOG.CSDN.NET/SU20145104009/ARTICLE/DETAILS/50654638?UTM_SOURCE=BLOGXGWZ0%E3%80%8B》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110324722A (zh) * 2019-07-02 2019-10-11 武汉斗鱼鱼乐网络科技有限公司 直播间中数据的获取方法、装置、设备和存储介质
CN110324722B (zh) * 2019-07-02 2021-07-23 武汉斗鱼鱼乐网络科技有限公司 直播间中数据的获取方法、装置、设备和存储介质
CN110457132A (zh) * 2019-08-01 2019-11-15 武汉斗鱼鱼乐网络科技有限公司 一种功能对象的创建方法、装置和终端设备
CN110457132B (zh) * 2019-08-01 2022-08-05 武汉斗鱼鱼乐网络科技有限公司 一种功能对象的创建方法、装置和终端设备
CN111274051A (zh) * 2020-01-19 2020-06-12 中信银行股份有限公司 数据的处理方法、装置、电子设备及计算机可读存储介质
CN111274051B (zh) * 2020-01-19 2023-08-22 中信银行股份有限公司 数据的处理方法、装置、电子设备及计算机可读存储介质
CN113971057A (zh) * 2020-07-22 2022-01-25 北京奇虎科技有限公司 页面组件信息缓存方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN109144633B (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
CN109144633A (zh) 活动窗口的数据共享方法、装置、设备及存储介质
US11256712B2 (en) Rapid design, development, and reuse of blockchain environment and smart contracts
CN108446313B (zh) 一种数据格式转换方法和装置
US20230396633A1 (en) Method and Apparatus for Detecting Security Event, and Computer-Readable Storage Medium
CN111209000B (zh) 自定义控件的处理方法、装置、电子设备及存储介质
CN113434557B (zh) 一种标签数据的范围查询方法、装置、设备及存储介质
CN102867049A (zh) 一种基于单词查找树实现的汉语拼音快速分词方法
CA3142770A1 (en) Component linkage configuration method, device, computer equipment and storage medium
US20240256613A1 (en) Data processing method and apparatus, readable storage medium, and electronic device
CN109698814A (zh) 僵尸网络发现方法及僵尸网络发现装置
CN114816170A (zh) 规则方案生成方法、装置、介质及电子设备
CN109254858B (zh) 活动窗口的数据共享方法、装置、设备及存储介质
US11941032B2 (en) Key name generation method and apparatus and non-transitory computer-readable storage medium
CN109062647A (zh) 活动窗口的数据共享方法、装置、设备及存储介质
CN114897666B (zh) 图数据存储、访问、处理方法、训练方法、设备及介质
CN115344538A (zh) 一种日志处理方法、装置、设备及可读存储介质
CN115017161A (zh) 一种结合虚拟dom更新树形数据结构方法、装置及应用
CN114064927A (zh) 地址图谱构建方法、装置、计算机设备及可读存储介质
CN110222105B (zh) 数据汇总处理方法及装置
CN104243201B (zh) 网络设备测试用例对应拓扑图的存储方法及系统
CN112650584A (zh) 缓存文件处理方法及装置
CN108920676B (zh) 一种处理图数据的方法及系统
CN116113939A (zh) 一种软件信息组织方法、装置和计算机可读介质
CN112748952A (zh) 一种环形依赖关系的检测方法、装置、设备和存储介质
CN109117221A (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