CN110457132A - 一种功能对象的创建方法、装置和终端设备 - Google Patents
一种功能对象的创建方法、装置和终端设备 Download PDFInfo
- Publication number
- CN110457132A CN110457132A CN201910706400.7A CN201910706400A CN110457132A CN 110457132 A CN110457132 A CN 110457132A CN 201910706400 A CN201910706400 A CN 201910706400A CN 110457132 A CN110457132 A CN 110457132A
- Authority
- CN
- China
- Prior art keywords
- information
- complete trails
- target
- active window
- function
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种功能对象的创建方法、装置和终端设备,该方法包括:在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息,其中,配置信息存储对象是预先根据预设配置文件获得;根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象。通过本发明实施例的技术方案,可以实现功能对象的自动创建,并且避免同一功能对象的重复创建,提高运行效率。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种功能对象的创建方法、装置和终端设备。
背景技术
随着计算机技术的快速发展,各种应用程序APP(Application)被研发应用在终端设备中,以满足用户日益增长的需求。在每个应用程序中往往需要创建相应的功能对象Manager来实现应用程序的交互、下载、状态查询等功能。
现有技术中,基于Android系统开发的应用程序中通常是直接利用new关键字进行实例化操作,创建出相应的功能对象,并且当每个函数需要使用功能对象时均会手动创建出相应的功能对象,从而导致创建出过多的重复的同一功能对象,大大降低了内存空间,影响了运行效率。
发明内容
本发明实施例提供了一种功能对象的创建方法、装置和终端设备,以实现功能对象的自动创建,并且避免同一功能对象的重复创建,提高运行效率。
第一方面,本发明实施例提供了一种功能对象的创建方法,包括:
在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;
将所述第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与所述第一全路径信息匹配成功的目标第二全路径信息,其中,所述配置信息存储对象是预先根据预设配置文件获得;
根据所述配置信息存储对象中的所述目标第二全路径信息对应的目标第三全路径信息,创建与所述目标第三全路径信息对应的功能对象。
第二方面,本发明实施例还提供了一种功能对象的创建装置,包括:
第一全路径信息获取模块,用于在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;
第一全路径信息匹配模块,用于将所述第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与所述第一全路径信息匹配成功的目标第二全路径信息,其中,所述配置信息存储对象是预先根据预设配置文件获得;
功能对象创建模块,用于根据所述配置信息存储对象中的所述目标第二全路径信息对应的目标第三全路径信息,创建与所述目标第三全路径信息对应的功能对象。
第三方面,本发明实施例还提供了一种终端设备,所述终端设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的功能对象的创建方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的功能对象的创建方法。
本发明实施例通过预先根据每个活动窗口组件需要创建的功能对象的全路径信息,生成预设配置文件,并根据预设配置文件获得配置信息存储对象。当监听到活动窗口组件的创建函数被调用时,将当前被创建的当前活动窗口组件的第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定匹配成功的目标第二全路径信息,并根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象,从而将活动窗口组件的创建与功能对象的创建进行了绑定,实现了功能对象的自动创建,并且可以对当前活动窗口组件所需要使用的所有功能对象进行统一创建,使得当前活动窗口组件中的每个函数可以直接使用创建好的功能对象,无需在每个函数需要使用功能对象时再进行创建,避免了同一功能对象的重复创建,进而降低了内存空间,提高了运行效率。
附图说明
图1是本发明实施例一提供的一种功能对象的创建方法的流程图;
图2是本发明实施例二提供的一种功能对象的创建方法的流程图;
图3是本发明实施例三提供的一种功能对象的创建装置的结构示意图;
图4是本发明实施例三提供的一种终端设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种功能对象的创建方法的流程图,本实施例可适用于对每个活动窗口组件所需要使用的功能对象进行创建的情况。该方法可以由功能对象的创建装置来执行,该装置可以由软件和/或硬件的方式来实现,可以集成于搭载有Android系统的终端设备中,比如智能手机、平板电脑、智能电视或者笔记本电脑等智能终端。该方法具体包括以下步骤:
S110、在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息。
其中,活动窗口组件(Activity)是一个负责与用户交互的组件,其提供一个屏幕(可以理解为屏幕界面,而非实体的显示屏幕),以供用户交互完成某项任务。一个Android应用程序中可以创建多个活动窗口组件。活动窗口组件的整个生命周期是从创建、运行、停止到销毁的过程,其可以通过调用创建函数onCreate()、开始函数onStart()、交互函数onResume()、暂停函数onPause()、停止函数onStop()和销毁函数onDestory()来转换活动窗口组件的运行状态。创建函数onCreate()是在活动窗口组件被首次创建时调用的函数,其是该活动窗口组件的生命周期第一个调用的函数。当前活动窗口组件可以是指当前时刻通过调用创建函数所创建出的活动窗口组件。第一全路径信息可以是指当前活动窗口组件对应的第一类名和第一包名。
具体地,本实施例可以实时监听活动窗口组件的创建函数是否被调用,当监听到创建函数被调用时,表明当前创建出了一个新的活动窗口组件,即当前活动窗口组件,此时可以通过调用全路径获取函数,比如调用activity?.packageName+activity?.localClassName函数,获得当前时刻运行的当前活动窗口组件的第一全路径信息。
示例性地,在S110之前还可以包括:在应用程序启动时,通过调用生命周期注册函数,注册监听每个活动窗口组件的生命周期函数的调用。
其中,应用程序可以是指装载的任意一个应用程序。生命周期注册函数可以是指预先定义的,用于注册活动窗口组件的生命周期的函数,以便可以监听应用程序中的所有活动窗口组件的生命周期。示例性地,生命周期注册函数可以为registerActivityLifecycleCallbacks()函数。
具体地,在应用程序启动时,即在该应用程序的Application对象的创建函数onCreate()中,调用Application对象的生命周期注册函数,并可以在生命周期注册函数中复写监听器中的活动窗口组件的创建函数onCreate(),从而可以注册监听活动窗口组件的创建函数是否被调用,同时也可以复写开始函数onStart()、交互函数onResume()、暂停函数onPause()、停止函数onStop()和销毁函数onDestory(),以便注册监听活动窗口组件的各个生命周期函数的调用。
S120、将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息,其中,配置信息存储对象是预先根据预设配置文件获得。
其中,预设活动窗口组件可以是指预先配置的,应用程序中需要使用功能对象的活动窗口组件,其可以基于业务需求和场景进行确定。预设活动窗口组件的数量可以为一个或多个。第二全路径信息可以是指预设活动窗口组件对应的第二类名和第二包名。目标第二全路径信息可以是指在配置信息存储对象中,与第一全路径信息匹配成功的第二全路径信息。需要说明的是,目标第二全路径信息可以为一个或多个。预设配置文件可以基于应用程序中需要使用功能对象的预设活动窗口组件的第二全路径信息以及每个活动窗口组件所需要使用的功能对象的第三全路径信息预先生成。预设配置信息存储对象可以是用于存储预设配置文件中的各个预设活动窗口组件的第二全路径信息以及每个预设活动窗口组件对应的待创建功能对象的第三全路径信息的对象。本实施例中活动窗口组件中需要使用的功能对象可以是指与活动窗口组件相关联的Manager对象,比如负责活动窗口组件中的下载操作的下载Manager对象。
具体地,本实施例可以预先对预设配置文件进行解析,获得配置信息存储对象。在获得当前活动窗口组件的第一全路径信息时,可以将第一全路径信息与配置信息存储对象存储的每个预设活动窗口组件的第二全路径信息进行逐个匹配,若匹配成功,比如第一全路径信息与某个预设活动窗口组件的第二全路径信息相同,则表明当前活动窗口组件是需要创建功能对象的组件,此时可以将匹配成功的该第二全路径信息确定为目标第二全路径信息。
示例性地,本实施例中的预设配置文件的可以包括多个嵌套式标签,每个嵌套式标签由外层标签和内层标签组成,其中,外层标签用于存储预设活动窗口组件的第二全路径信息;内层标签用于存储预设活动窗口组件中待创建功能对象的第三全路径信息。示例性地,包括两个嵌套式标签的预设配置文件的数据结构可以为:
其中,class-list为配置文件的根标签,用于表示所有创建的功能对象内的入口信息。type为外层标签,用于表征某个或某些预设活动窗口组件。其中外层标签type具有一个名称name属性,用于存储预设活动窗口组件的第二全路径信息,或者全部组件all标识,其中all标识用于表征应用程序中所有的活动窗口组都需要创建的功能对象,以便简化配置信息,提高解析效率。每个外层标签type均包含一个或多个内层标签class,用于表征预设活动窗口组件中需要创建的功能对象,每个功能对象对应一个内层标签。每个内层标签class也具有一个名称name属性,用于存储每个待创建功能对象的第三全路径信息。
需要说明的是,针对上述数据结构,在S120中将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配时,除了可以将与第一全路径信息相同的第二全路径信息作为目标第二全路径信息之外,还可以将配置信息存储对象中存储的全部组件all标识作为目标第二全路径信息,以便后续可以获得全部组件all标识所对应的待创建功能对象的第三全路径信息。
示例性地,本实施例中的配置信息存储对象的数据结构可以为一个多级嵌套的键值对MAP结构,比如MutableMap<String,MutableList<String>>,其中每个键值对信息<String,MutableList<String>>中的键信息String用于存储字符串类型的外层标签的属性值,值信息MutableList<String>是一个集合List类型的,用于存储外层标签内的每个内层标签的属性值。
示例性地,根据预设配置文件获得配置信息存储对象,可以包括:调用文件解析函数,对预设配置文件进行解析,将每个嵌套式标签中的外层标签的属性值作为键值对信息中的键信息,以及将内层标签的属性值作为键值对信息中的值信息,存储至数据结构为键值对MAP结构的配置信息存储对象中,获得配置信息存储对象。
其中,文件解析函数可以是预先定义的,用于解析在预设存储位置处,比如资源asset目录中存储的预设配置文件的函数。具体地,通过利用文件解析函数,可以将预设配置文件中的每个嵌套式标签解析为一个对应的键值对信息,即将嵌套式标签中的外层标签的属性值作为一个键值对信息中的键信息,以及将该嵌套式标签中的各个内层标签的属性值,以集合的方式作为该键值对信息中的值信息,存储至配置信息存储对象中,从而可以将预设配置文件中所有的配置信息进行解析存储至配置信息存储对象中。
S130、根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象。
其中,目标第三全路径信息可以是指当前活动窗口组件中需要创建的每个功能对象所对应的第三全路径信息。目标第三全路径信息可以包括待创建的功能对象对应的目标第三类名和目标第三包名。目标第三全路径信息的数量可以为一个或多个。
具体地,配置信息存储对象中存储有每个第二全路径信息所对应的各个第三全路径信息,从而基于该对应关系,可以确定出每个目标第二全路径信息所对应的各个目标第三全路径信息。本实施例可以基于反射机制,根据目标第三全路径信息自动创建出相应的功能对象,从而可以在当前活动窗口组件创建时统一创建出该当前活动窗口组件需要的所有功能对象,以便在后续操作中可以直接使用功能对象,无需实时进行创建,避免了同一功能对象的重复创建,提高了内存利用率,提升了运行效率。
示例性地,创建与目标第三全路径信息对应的功能对象,可以包括:将目标第三类名和目标第三包名作为函数输入参数,调用类查询函数,确定类class类型的功能类对象;对功能类对象进行实例化,获得相应的功能对象。
其中,类查询函数可以是预先定义的,用于根据全路径信息,即类名和包名查询对应的功能类对象的函数。功能类对象是一个class类型的抽象对象。例如,类查询函数可以是系统类Class中的函数Class.forName(“包名.类名”)。具体地,本实施例中的每个功能对象均对应一个功能类对象。对于每个目标第三全路径信息而言,可以基于反射机制,根据该目标第三全路径信息中的目标第三类名和目标第三包名进行实例化创建出相应的功能对象。例如,目标第三全路径信息为:com.ding.qa.DemoManager,则可以通过调用Classmanager=Class.forName(“com.ding.qa.DemoManager”),确定class类型的功能类对象manager。并可以通过调用manager.newInstance()实例化函数,对功能类对象manager进行实例化,创建出相应的功能对象,从而实现了功能对象的统一创建。
需要说明的是,在配置信息存储对象的数据结构为键值对MAP结构时,可以利用循环的方式,逐个将每个键值对信息中的键信息与第一全路径信息进行匹配,若匹配成功,则根据该键值对信息中的值信息创建相应的功能对象,从而进一步提高创建效率。例如,可以通过调用配置信息存储对象mgrConfigMap中的mgrConfigMap.forEach逐个获得每个键值对信息,并通过调用val key=it.key获得该键值对信息中的键信息key,通过valvalueList=it.value获得该键值对信息中的值信息valueList,并可以在键信息key与第一全路径信息相同,或者键信息key为全部组件all标识时,表明匹配成功,此时可以利用值信息valueList存储的各个目标第三全路径信息来创建相应的每个功能对象,从而可以依次循环地创建出当前活动窗口组件所需的各个功能对象,提高了创建效率。
本实施例的技术方案,通过预先根据每个活动窗口组件需要创建的功能对象的全路径信息,生成预设配置文件,并根据预设配置文件获得配置信息存储对象。当监听到活动窗口组件的创建函数被调用时,将当前被创建的当前活动窗口组件的第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定匹配成功的目标第二全路径信息,并根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象,从而将活动窗口组件的创建与功能对象的创建进行了绑定,实现了功能对象的自动创建,并且可以对当前活动窗口组件所需要使用的所有功能对象进行统一创建,使得当前活动窗口组件中的每个函数可以直接使用创建好的功能对象,无需在每个函数需要使用功能对象时再进行创建,避免了同一功能对象的重复创建,进而降低了内存空间,提高了运行效率。
在上述技术方案的基础上,文件解析函数可以通过如下步骤S210-S250实现对预设配置文件进行解析,获得配置信息存储对象的功能:
S210、以预设配置文件的文件名称为函数输入参数,调用资源管理对象中的文件打开函数,获得预设配置文件对应的输入流对象,其中预设配置文件预先存储至资源目录中。
其中,资源目录可以是指Android系统中的asset目录。本实施例将生成的预设配置文件存储在asset目录下,可以保证预设配置文件的安全性,以及便于对文件进行有效读取。资源管理对象可以是指用于读取资源目录下的预设配置文件的对象。文件打开函数可以是预先定义的,用于打开配置文件获得输入流对象的函数,比如open()函数。
具体地,本实施例可以预先通过调用val assetManager=application?.applicationContext?.assets获得一个资源管理对象assetManager,即通过调用application?.applicationContext?.assets系统的API(Application ProgrammingInterface,应用程序接口)生成资源管理对象。示例性地,预设配置文件的文件名称为:manager_init_config.xml时,可以通过调用assetManager?.open("manager_init_config.xml"),获得一个输入流类型FileInputStrean的输入流对象fileInputStrean。
S220、调用预先创建的解析器对象中的传递函数,将输入流对象传递至解析器对象中,获得目标解析器对象。
其中,解析器对象可以是预先创建的,用于解析预设配置文件的解析器。传递函数可以是预先定义的,用于将输入流对象写入至解析器对象的函数,以便进行文件解析。目标解析器对象可以是指存储有输入流对象的解析器。
具体地,本实施例可以预先通过调用系统中提供的函数XmlPullParserFactory.newInstance()获得一个XmlPullParserFactory类型的工厂对象xmlPullParserFactor;通过调用xmlPullParserFactory.isNamespaceAware=true将工厂对象xmlPullParserFactory中的isNamespaceAware字段赋值为true,以便允许读取预设配置文件;通过调用xmlPullParserFactory.newPullParser()创建出一个XmlPullParser类型的解析器对象parser。通过将输入流对象fileInputStrean作为函数输入参数,调用解析器对象parser中的传递函数parser.setInput(fileInputStrean,"UTF-8"),可以将预设配置文件的输入流对象fileInputStrean传递至解析器对象parser中,从而获得目标解析器对象parser1。
S230、循环读取目标解析器对象中的每行数据,并检测每行数据中的开始标签为外层标签还是内层标签,若是外层标签,则进入步骤S240;若是内层标签,则进入步骤S250。
具体地,本实施例可以通过调用目标解析器对象中的事件获取函数parser1.getEventType()获得事件信息eventType,并通过调用while(eventType!=XmlPullParser.END_DOCUMENT)方式,循环读取目标解析器对象中的每行数据,直到到达输入流对象的文件结束标签。本实施例可以通过when(eventType)方法对eventType事件信息进行筛选处理,在eventType为XmlPullParser.START_TAG时,表明解析到了输入流对象中的一个开始标签,此时可以通过调用tagName=parser1.getName获得开始标签的名称tagName,并可以通过比较tagName与外层标签type相同,还是与内层标签class相同,来确定出该开始标签是外层标签还是内层标签。
S240、获取外层标签的属性值,并将外层标签的属性值作为键值对信息中的键信息存储至配置信息存储对象中。
具体地,当tagName与外层标签type相同时,可以通过调用目标解析器对象中的属性值获取函数parser1.nextText(),获取外层标签的属性值。本实施例可以预先定义两个临时变量,var typeName=""和var className="",并初始化为空字符串。其中,typeName用于存储解析过程中外层标签type的属性值;className用于存储解析过程中内层标签class的属性值。可以将此时获得的外层标签的属性值先存储至临时变量typeName中,并将外层标签的属性值作为键信息,存储至配置信息存储对象中。
S240、获取内层标签的属性值,并将内层标签的属性值作为键值对信息中的值信息存储至配置信息存储对象中。
具体地,当tagName与内层标签class相同时,可以通过调用目标解析器对象中的属性值获取函数parser1.nextText(),获取内层标签的属性值,并将内层标签的属性值存储至可以先临时变量className中,然后通过调用tmpList=mgrConfigMap[typeName]和tmpList?.add(className)函数,将className作为typeName所对应的值信息存储到mgrConfigMap对象中。通过上述的循环操作,可以更加快速地将所有配置信息全部解析并存储到配置信息存储对象中。
实施例二
图2为本发明实施例二提供的一种功能对象的创建方法的流程图,本实施例在上述实施例的基础上,对“将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配”进行了优化,其中与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的功能对象的创建方法包括如下步骤:
S310、在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息。
S320、检测当前的配置信息存储对象是否为空对象,若是,则进入步骤S330;若否,则进入步骤S340。
具体地,本实施例是在应用程序启动时,对预设配置文件进行解析获得配置信息存储对象。由于预设配置文件的解析需要一定的时间,使得在解析过程中若存在活动窗口组件被创建的情况,则由于还未解析完成,即配置信息存储对象为一个空对象,此时无法基于该配置信息存储对象进行功能对象的创建,从而在监听到活动窗口组件的创建函数被调用时,需要检测当前的配置信息存储对象是否为空对象,以避免出现无法为当前创建的活动窗口组件创建功能对象的情况。
S330、将第一全路径信息存储至预设存储对象中,并返回执行步骤S320。
其中,预设存储对象可以是预先设置的,用于存储活动窗口组件的第一全路径信息的对象。本实施例中的预设存储对象可以为一个集合List类型的,以便存储每个未创建功能对象的活动窗口组件所对应的第一全路径信息。
具体地,在检测到当前的配置信息存储对象为空对象时,表明预设配置文件的解析还未完成,此时需要将当前创建的活动窗口组件的第一全路线信息存储至预设存储对象中,以便基于预设存储对象可以获知未创建功能对象的活动窗口组件,并返回执行步骤S320的操作,等待预设配置文件的解析。示例性地,在将第一全路径信息存储至预设存储对象中之前,还需要检测预设存储对象中是否已存储有该第一全路径信息,若是,则无需存储该第一全路径信息,以避免重复存储,从而可以防止后续功能对象的重复创建。
S340、将预设存储对象中存储的第一全路径信息与当前的配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息;和/或,将当前被创建的当前活动窗口组件的第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息。
具体地,在检测到当前的配置信息存储对象为非空对象时,可以将预设存储对象中存储的各个第一全路径信息与当前的配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,从而可以对之前已创建的每个预设活动窗口组件统一创建出所需要的所有功能对象。若在配置信息存储对象为非空对象时,当前时刻也存在被创建的当前活动窗口组件时,则此时无需将当前活动窗口组件对应的第一全路线信息存储至预设存储对象中,而是直接将当前活动窗口组件对应的第一全路线信息与配置信息存储对象中的各个第二全路线信息进行匹配,以对当前活动窗口组件统一创建出所需要的所有功能对象。
需要说明的是,在基于预设存储对象,将之前未创建功能对象的活动窗口组件统一创建出所需要的所有功能对象时,可以将预设存储对象进行清空操作,以避免为同一个活动窗口组件重复创建所需的功能对象。
S350、根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象。
本实施例的技术方案,通过在检测到当前的配置信息存储对象为空对象时,将当前创建的活动窗口组件的第一全路线信息存储至预设存储对象中,以便可以基于预设存储对象,将之前未创建功能对象的活动窗口组件统一创建出所需要的所有功能对象,从而可以保证为每个活动窗口组件均创建出所需要的功能对象,提高了系统稳定性。
在上述技术方案的基础上,在S350之后还可以包括:在监听到当前活动窗口组件的销毁函数被调用时,将创建的功能对象进行删除。
具体地,本实施例可以在应用程序启动时,调用Application对象的生命周期注册函数,并可以在生命周期注册函数中复写监听器中的活动窗口组件的销毁函数onDestory(),以便可以实时监听活动窗口组件的销毁函数是否被调用。当监听到当前活动窗口组件的销毁函数被调用时,表明后续无需再使用为当前活动窗口组件所创建出的所有功能对象,此时可以将创建出的所有功能对象进行删除,主动地断开活动窗口组件与功能对象的绑定,并且及时释放出功能对象所占用的存储空间,避免因功能对象过多而出现内存泄漏的情况,大大提高了系统运行性能。
以下是本发明实施例提供的功能对象的创建装置的实施例,该装置与上述各实施例的功能对象的创建方法属于同一个发明构思,在功能对象的创建装置的实施例中未详尽描述的细节内容,可以参考上述功能对象的创建方法的实施例。
实施例三
图3为本发明实施例三提供的一种功能对象的创建装置的结构示意图,本实施例可适用于对每个活动窗口组件所需要使用的功能对象进行创建的情况,该装置具体可以包括:第一全路径信息获取模块410、第一全路径信息匹配模块420和功能对象创建模块430。
其中,第一全路径信息获取模块410,用于在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;第一全路径信息匹配模块420,用于将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息,其中,配置信息存储对象是预先根据预设配置文件获得;功能对象创建模块430,用于根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象。
可选地,预设配置文件包括多个嵌套式标签,每个嵌套式标签由外层标签和内层标签组成,其中,外层标签用于存储预设活动窗口组件的第二全路径信息;内层标签用于存储预设活动窗口组件中待创建功能对象的第三全路径信息。
可选地,该装置还包括:配置信息存储对象确定模块,用于:调用文件解析函数,对预设配置文件进行解析,将每个嵌套式标签中的外层标签的属性值作为键值对信息中的键信息,以及将内层标签的属性值作为键值对信息中的值信息,存储至数据结构为键值对MAP结构的配置信息存储对象中,获得配置信息存储对象。
可选地,配置信息存储对象确定模块包括文件解析函数执行单元,用于通过如下步骤实现对预设配置文件进行解析,获得配置信息存储对象的功能:
以预设配置文件的文件名称为函数输入参数,调用资源管理对象中的文件打开函数,获得预设配置文件对应的输入流对象,其中预设配置文件预先存储至资源目录中;
调用预先创建的解析器对象中的传递函数,将输入流对象传递至解析器对象中,获得目标解析器对象;
循环读取目标解析器对象中的每行数据,并检测每行数据中的开始标签为外层标签还是内层标签;
在检测到开始标签为外层标签时,获取外层标签的属性值,并将外层标签的属性值作为键值对信息中的键信息存储至配置信息存储对象中;
在检测到开始标签为内层标签时,获取内层标签的属性值,并将内层标签的属性值作为键值对信息中的值信息存储至配置信息存储对象中。
可选地,目标第三全路径信息包括功能对象对应的目标第三类名和目标第三包名;相应地,功能对象创建模块430,具体用于:
将目标第三类名和目标第三包名作为函数输入参数,调用类查询函数,确定类class类型的功能类对象;对功能类对象进行实例化,获得相应的功能对象。
可选地,第一全路径信息匹配模块420,还用于:
在检测到当前的配置信息存储对象为空对象时,将第一全路径信息存储至预设存储对象中;
在检测到当前的配置信息存储对象为非空对象时,将预设存储对象中存储的第一全路径信息与当前的配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,和/或将当前被创建的当前活动窗口组件的第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配。
可选地,该装置还包括:
功能对象删除模块,用于在创建与目标第三全路径信息对应的功能对象之后,在监听到当前活动窗口组件的销毁函数被调用时,将创建的功能对象进行删除。
可选地,该装置还包括:
注册监听模块,用于在监听到活动窗口组件的创建函数被调用时,获取被创建的当前活动窗口组件的第一全路径信息之前,在应用程序启动时,通过调用生命周期注册函数,注册监听每个活动窗口组件的生命周期函数的调用。
本发明实施例所提供的功能对象的创建装置可执行本发明任意实施例所提供的功能对象的创建方法,具备执行功能对象的创建方法相应的功能模块和有益效果。
实施例四
图4是本发明实施例四提供的一种终端设备的结构示意图。参见图4,该终端设备包括:
一个或多个处理器510;
存储器520,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器510执行,使得一个或多个处理器510实现如上述任意实施例所提供的功能对象的创建方法,该方法包括:
在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;
将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息,其中,配置信息存储对象是预先根据预设配置文件获得;
根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象。
图4中以一个处理器510为例;终端设备中的处理器510和存储器520可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的功能对象的创建方法对应的程序指令/模块(例如,功能对象的创建装置中的第一全路径信息获取模块410、第一全路径信息匹配模块420和功能对象创建模块430)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行终端设备的各种功能应用以及数据处理,即实现上述的功能对象的创建方法。
存储器520主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的终端设备与上述实施例提出的功能对象的创建方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行功能对象的创建方法相同的有益效果。
实施例五
本实施例五提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的功能对象的创建方法,该方法包括:
在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;
将第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与第一全路径信息匹配成功的目标第二全路径信息,其中,配置信息存储对象是预先根据预设配置文件获得;
根据配置信息存储对象中的目标第二全路径信息对应的目标第三全路径信息,创建与目标第三全路径信息对应的功能对象。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种功能对象的创建方法,其特征在于,包括:
在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;
将所述第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与所述第一全路径信息匹配成功的目标第二全路径信息,其中,所述配置信息存储对象是预先根据预设配置文件获得;
根据所述配置信息存储对象中的所述目标第二全路径信息对应的目标第三全路径信息,创建与所述目标第三全路径信息对应的功能对象。
2.根据权利要求1所述的方法,其特征在于,所述预设配置文件包括多个嵌套式标签,每个所述嵌套式标签由外层标签和内层标签组成,其中,所述外层标签用于存储预设活动窗口组件的第二全路径信息;所述内层标签用于存储预设活动窗口组件中待创建功能对象的第三全路径信息。
3.根据权利要求2所述的方法,其特征在于,根据预设配置文件获得所述配置信息存储对象,包括:
调用文件解析函数,对所述预设配置文件进行解析,将每个所述嵌套式标签中的外层标签的属性值作为键值对信息中的键信息,以及将内层标签的属性值作为所述键值对信息中的值信息,存储至数据结构为键值对MAP结构的配置信息存储对象中,获得配置信息存储对象。
4.根据权利要求3所述的方法,其特征在于,所述文件解析函数通过如下步骤实现对所述预设配置文件进行解析,获得配置信息存储对象的功能:
以所述预设配置文件的文件名称为函数输入参数,调用资源管理对象中的文件打开函数,获得所述预设配置文件对应的输入流对象,其中所述预设配置文件预先存储至资源目录中;
调用预先创建的解析器对象中的传递函数,将所述输入流对象传递至解析器对象中,获得目标解析器对象;
循环读取所述目标解析器对象中的每行数据,并检测每行数据中的开始标签为外层标签还是内层标签;
在检测到所述开始标签为外层标签时,获取所述外层标签的属性值,并将所述外层标签的属性值作为键值对信息中的键信息存储至配置信息存储对象中;
在检测到所述开始标签为内层标签时,获取所述内层标签的属性值,并将所述内层标签的属性值作为所述键值对信息中的值信息存储至配置信息存储对象中。
5.根据权利要求1所述的方法,其特征在于,所述目标第三全路径信息包括所述功能对象对应的目标第三类名和目标第三包名;
相应地,创建与所述目标第三全路径信息对应的功能对象,包括:
将所述目标第三类名和目标第三包名作为函数输入参数,调用类查询函数,确定类class类型的功能类对象;
对所述功能类对象进行实例化,获得相应的功能对象。
6.根据权利要求1所述的方法,其特征在于,将所述第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,包括:
在检测到当前的配置信息存储对象为空对象时,将所述第一全路径信息存储至预设存储对象中;
在检测到当前的配置信息存储对象为非空对象时,将所述预设存储对象中存储的第一全路径信息与当前的配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,和/或将当前被创建的当前活动窗口组件的第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配。
7.根据权利要求1所述的方法,其特征在于,在创建与所述目标第三全路径信息对应的功能对象之后,还包括:
在监听到所述当前活动窗口组件的销毁函数被调用时,将创建的所述功能对象进行删除。
8.根据权利要求1-7任一所述的方法,其特征在于,在监听到活动窗口组件的创建函数被调用时,获取被创建的当前活动窗口组件的第一全路径信息之前,还包括:
在应用程序启动时,通过调用生命周期注册函数,注册监听每个活动窗口组件的生命周期函数的调用。
9.一种功能对象的创建装置,其特征在于,包括:
第一全路径信息获取模块,用于在监听到活动窗口组件的创建函数被调用时,获取当前被创建的当前活动窗口组件的第一全路径信息;
第一全路径信息匹配模块,用于将所述第一全路径信息与配置信息存储对象中的每个预设活动窗口组件的第二全路径信息进行匹配,确定与所述第一全路径信息匹配成功的目标第二全路径信息,其中,所述配置信息存储对象是预先根据预设配置文件获得;
功能对象创建模块,用于根据所述配置信息存储对象中的所述目标第二全路径信息对应的目标第三全路径信息,创建与所述目标第三全路径信息对应的功能对象。
10.一种终端设备,其特征在于,所述终端设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的功能对象的创建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706400.7A CN110457132B (zh) | 2019-08-01 | 2019-08-01 | 一种功能对象的创建方法、装置和终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706400.7A CN110457132B (zh) | 2019-08-01 | 2019-08-01 | 一种功能对象的创建方法、装置和终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110457132A true CN110457132A (zh) | 2019-11-15 |
CN110457132B CN110457132B (zh) | 2022-08-05 |
Family
ID=68484461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910706400.7A Active CN110457132B (zh) | 2019-08-01 | 2019-08-01 | 一种功能对象的创建方法、装置和终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110457132B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000313A (zh) * | 2020-08-03 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 请求响应方法、装置、设备及存储介质 |
CN112068871A (zh) * | 2020-08-12 | 2020-12-11 | 海信集团有限公司 | 电子设备和应用的管理方法 |
CN112988737A (zh) * | 2019-12-16 | 2021-06-18 | 北京奇艺世纪科技有限公司 | 数据存储方法及装置、数据获取方法及装置、电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5608898A (en) * | 1990-10-31 | 1997-03-04 | Borland International, Inc. | Development system with methods for maintaining data integrity of information stored as a data record in a database with a copy of the information displayed on a screen device |
US20030140191A1 (en) * | 2002-01-24 | 2003-07-24 | Mcgowen Michael E. | System, method, and computer program product for on-line replacement of a host bus adapter |
CN104462979A (zh) * | 2014-12-26 | 2015-03-25 | 深圳数字电视国家工程实验室股份有限公司 | 一种应用程序的自动化动态检测方法及装置 |
CN104536802A (zh) * | 2014-12-19 | 2015-04-22 | 中兴通讯股份有限公司 | 一种实现应用调用的方法及虚拟机 |
CN105389315A (zh) * | 2014-09-04 | 2016-03-09 | 阿里巴巴集团控股有限公司 | 一种动态网页更新方法及装置 |
CN106383712A (zh) * | 2016-09-21 | 2017-02-08 | 武汉斗鱼网络科技有限公司 | 一种Toast组件实现方法和系统 |
CN109144633A (zh) * | 2018-07-20 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | 活动窗口的数据共享方法、装置、设备及存储介质 |
-
2019
- 2019-08-01 CN CN201910706400.7A patent/CN110457132B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5608898A (en) * | 1990-10-31 | 1997-03-04 | Borland International, Inc. | Development system with methods for maintaining data integrity of information stored as a data record in a database with a copy of the information displayed on a screen device |
US20030140191A1 (en) * | 2002-01-24 | 2003-07-24 | Mcgowen Michael E. | System, method, and computer program product for on-line replacement of a host bus adapter |
CN105389315A (zh) * | 2014-09-04 | 2016-03-09 | 阿里巴巴集团控股有限公司 | 一种动态网页更新方法及装置 |
CN104536802A (zh) * | 2014-12-19 | 2015-04-22 | 中兴通讯股份有限公司 | 一种实现应用调用的方法及虚拟机 |
CN104462979A (zh) * | 2014-12-26 | 2015-03-25 | 深圳数字电视国家工程实验室股份有限公司 | 一种应用程序的自动化动态检测方法及装置 |
CN106383712A (zh) * | 2016-09-21 | 2017-02-08 | 武汉斗鱼网络科技有限公司 | 一种Toast组件实现方法和系统 |
CN109144633A (zh) * | 2018-07-20 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | 活动窗口的数据共享方法、装置、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988737A (zh) * | 2019-12-16 | 2021-06-18 | 北京奇艺世纪科技有限公司 | 数据存储方法及装置、数据获取方法及装置、电子设备 |
CN112988737B (zh) * | 2019-12-16 | 2023-09-15 | 北京奇艺世纪科技有限公司 | 数据存储方法及装置、数据获取方法及装置、电子设备 |
CN112000313A (zh) * | 2020-08-03 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 请求响应方法、装置、设备及存储介质 |
CN112068871A (zh) * | 2020-08-12 | 2020-12-11 | 海信集团有限公司 | 电子设备和应用的管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110457132B (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10462018B2 (en) | Managing a number of secondary clouds by a master cloud service manager | |
CN110457132A (zh) | 一种功能对象的创建方法、装置和终端设备 | |
CN107274186A (zh) | 在区块链中获得智能合约接口的方法和设备 | |
CN111752799A (zh) | 一种业务链路跟踪方法、装置、设备及储存介质 | |
CN110889067A (zh) | 页面的渲染方法、装置、设备及存储介质 | |
CN110704131B (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN112558968B (zh) | 一种资源树视图的生成方法、装置、设备及存储介质 | |
CN114285793A (zh) | 一种分发方法、装置、设备和存储介质 | |
CN113792008A (zh) | 网络拓扑结构的获取方法、装置、电子设备及存储介质 | |
CN113191889A (zh) | 风控配置方法、配置系统、电子设备及可读存储介质 | |
CN113079207A (zh) | 一种实现端口或网络高可用的方法、系统、终端及介质 | |
EP4369203A1 (en) | Cloud platform docking debugging method and apparatus, and electronic device and storage medium | |
CN109918215A (zh) | 一种进程通信方法、系统、终端和存储介质 | |
CN113055393B (zh) | 一种安全服务化方法、装置以及设备 | |
CN115134352A (zh) | 一种埋点数据上传方法、装置、设备及介质 | |
CN109558375B (zh) | 一种优化的文件存储方法、存储介质、设备及系统 | |
CN112988125B (zh) | 一种数据桥接方法、装置、设备和存储介质 | |
CN109495782A (zh) | 一种弹幕消息的存储方法、系统和存储介质 | |
CN105610908B (zh) | 一种基于安卓设备的samba服务实现方法及系统 | |
CN112748952A (zh) | 一种环形依赖关系的检测方法、装置、设备和存储介质 | |
CN113778726A (zh) | 一种错误信息处理方法、装置、服务器和存储介质 | |
CN109412931A (zh) | 利用即时通讯方式进行知识问答的方法、装置和终端设备 | |
CN110401841A (zh) | 一种直播间消息的解析方法、装置、设备及存储介质 | |
CN110442404A (zh) | 一种对象释放方法、装置、设备和存储介质 | |
CN114915837B (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 |