CN104715056B - 一种利用网页生命周期优化应用的方法和装置 - Google Patents
一种利用网页生命周期优化应用的方法和装置 Download PDFInfo
- Publication number
- CN104715056B CN104715056B CN201510146183.2A CN201510146183A CN104715056B CN 104715056 B CN104715056 B CN 104715056B CN 201510146183 A CN201510146183 A CN 201510146183A CN 104715056 B CN104715056 B CN 104715056B
- Authority
- CN
- China
- Prior art keywords
- state machine
- frame
- mapping table
- life cycle
- cycle information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000005457 optimization Methods 0.000 title claims abstract description 27
- 238000013507 mapping Methods 0.000 claims description 141
- 238000000151 deposition Methods 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 5
- 230000008859 change Effects 0.000 abstract description 4
- 230000001960 triggered effect Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- PENWAFASUFITRC-UHFFFAOYSA-N 2-(4-chlorophenyl)imidazo[2,1-a]isoquinoline Chemical compound C1=CC(Cl)=CC=C1C1=CN(C=CC=2C3=CC=CC=2)C3=N1 PENWAFASUFITRC-UHFFFAOYSA-N 0.000 description 2
- 241000406668 Loxodonta cyclotis Species 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种利用网页生命周期优化应用的方法和装置,用以解决现有技术中因为识别控制网页生命周期时需要针对众多事件编码处理导致的开发成本高问题。所述方法包括:依据浏览器控件对象的当前事件获取当前网页的帧对象;获取所述帧对象的状态机对象;基于所述状态机对象,记录当前网页的生命周期信息;各应用依据自身需求,获取相应网页的生命周期信息;并基于所获取的生命周期信息,执行相应优化操作。本申请通过为浏览器窗口中的每个帧对象创建状态机并记录网页生命周期中的状态变化,因而可以方便地记录和获取网页的生命周期信息,并为应用程序基于网页的生命周期信息提高性能优化提供了保证,有效降低了开发成本。
Description
技术领域
本申请涉及网页数据处理技术领域,特别是涉及一种利用网页生命周期优化应用的方法和装置。
背景技术
组件技术是当前计算机工业最重要的软件开发技术之一。传统上,一个应用程序是由单个的二进制文件组成,但是这样的应用程序非常不便于使用,因为如果要改变应用程序的某部分功能就需要对整个应用程序重新编译生成新的版本才能使用。随后,开发人员开始将单个应用程序分隔成单独多个独立部分,每个独立部分都是相对小的可执行程序,也即是组件。组件除了自身可执行外,还可以为应用程序、操作***或其他程序提供服务。
组件对象模型(Component Oject Model,COM)是微软公司提出的一种开发组件的方法。在COM组件架构下,COM组件通常以动态链接库(DLL)或可执行文件(EXE)的方式发布为可执行代码,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用***。
浏览器控件(WebBrowser)是一种基于COM的控件。使用WebBrowser控件可以在Windows窗体应用程序中承载网页以及支持浏览器的其他文档,并为应用程序提供Web浏览功能。
WebBrowser控件包含多种可以用来实现浏览器(Internet Explorer)中的控件的属性、方法和事件。WebBrowser通过事件与外部应用程序进行交互。事件由WebBrowser触发,外部应用程序根据不同的事件执行不同的逻辑处理。
WebBrowser常用事件有以下几个:
BeforeNavigate2:导航前事件,该事件在导航之前发生,该事件并不在刷新页面时发生。
NavigateComplete2:导航完成事件,当整个导航完成时发生。
DownloadBegin:下载开始事件,当一个下载项目开始时发生,此事件也在刷新时发生。
DownloadComplete:下载完成事件,当整个下载项目完成时发生,该事件也发生在完成刷新页面时。
WebBrowser虽然提供了丰富的事件,但这些事件的封装仍存在缺陷。例如,当用户在浏览器地址栏输入URL进入网站浏览网页时会触发BeforeNavigate事件,当离开当前网页时(此时用户输入了新的URL)也会触发BeforeNavigate事件,用户输入新的URL同时也意味着之前网页生命周期结束。由于网页表现形式的多样性,在一个主网页(主帧)中可能包含多个子网页(子帧),其中每个帧的网页对应不同的url。如图1所示,图1示出了一个主帧包含子帧1、子帧2两个子帧的网页形式。对于这种情况,主帧和子帧都会触发当前WebBrowser控件的同一事件,例如当主帧和子帧进入或离开各自对应的URL时会触发多次BeforeNavigate事件。
对于主帧或子帧各自网页的生命周期而言,由于主帧和子帧在导航至新的URL时都将触发BeforeNavigate事件,而开发人员为了识别当前帧对象中网页的生命周期是否结束,就需要在应用程序中使用大量的编码方式逐一比较和记录各个帧中网页的前后变化,这种采用硬编码的方式灵活性很差,造成资源和成本难以降低。同样的问题在网页生命周期中的其他类似事件触发时同样无法避免,如DocumentComplete事件等。因此,不但所有事件都需要大量编码处理,对代码的任何修改都必须覆盖到对所有事件的处理,而且应用程序也必须做出相应修改。特别是,随着主帧中子帧数量的增加,随之带来的复杂度和工作量也急剧增加,无法有效降低开发成本。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够降低上述情形下的工作成本,减少资源消耗。
发明内容
本申请所要解决的技术问题是提供一种利用网页生命周期优化应用的方法和装置,以便能够降低因为识别控制网页生命周期时需要针对众多事件编码处理导致的开发成本高、资源消耗大的问题。
为了解决上述问题,本申请公开了一种利用网页生命周期优化应用的方法,包括:
依据浏览器控件对象的当前事件获取当前网页的帧对象;
获取所述帧对象的状态机对象;
基于所述状态机对象,记录当前网页的生命周期信息;
各应用依据自身需求,获取相应网页的生命周期信息;并基于所获取的生命周期信息,执行相应优化操作。
优选的,所述基于所获取的生命周期信息,执行相应优化操作包括:
基于所获取网页的生命周期信息判断当前网页的生命周期是否结束,若结束,释放与所述网页对应的***资源。
优选的,所述获取所述帧对象的状态机对象包括:
依据预置的状态机映射表,判断所述帧对象的状态机对象是否存在;
若不存在,创建所述帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
优选的,所述获取所述帧对象的状态机对象还包括:
若所述帧对象的状态机对象在所述状态机映射表中存在,依据所述状态机映射表,查找并获得所述帧对象的状态机对象。
优选的,还包括:
如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则销毁所述状态机对象;及,
从所述状态机映射表中删除所述帧对象和对应的状态机对象的映射关系;
为所述帧对象创建新的状态机对象,并将所述帧对象和新创建的状态机对象的映射关系存储到所述状态机映射表中。
优选的,所述销毁所述状态机对象还包括:
若所述帧对象为主帧,销毁所述主帧的状态机对象;
依据所述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
优选的,所述销毁所述状态机对象还包括:
若所述帧对象为子帧,销毁所述子帧的状态机对象。
优选的,所述方法还包括:
预置状态机控制对象,所述状态机映射表置于所述状态机控制对象中。
优选的,所述在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系,包括:
将所述帧对象和对应的状态机对象按二叉树结构存储在所述状态机映射表中。
为解决上述问题,本申请还提供了一种利用网页生命周期优化应用的装置,包括:
帧对象获取模块,用于依据浏览器控件对象的当前事件获取当前网页的帧对象;
状态机获取模块,用于获取帧对象的状态机对象;
生命周期信息记录模块,用于基于状态机对象,记录网页的生命周期信息;
生命周期信息发送模块,用于根据应用请求向应用发送网页的生命周期信息。
优选的,还包括:
状态机映射表,用于存储帧对象和对应状态机对象的映射关系;
所述状态机获取模块还包括:
状态创建单元,用于依据状态机映射表,判断帧对象的状态机对象是否存在;若不存在,创建帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
优选的,所述状态机获取模块还包括:
状态机查找单元,如果帧对象的状态机对象在状态机映射表中存在,,查找并获得所述帧对象的状态机对象。
优选的,还包括:
状态机销毁模块,用于销毁状态机对象;
映射删除模块,用于删除状态机映射表中帧对象与状态机对象的映射关系;
销毁验证模块,用于判断如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则通知状态机销毁模块销毁状态机对象,通知映射删除模块删除帧对象与状态机对象的映射关系。
优选的,所述状态机销毁模块还包括:
主帧状态机销毁单元,用于销毁主帧的状态机对象;依据述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
优选的,所述状态机销毁模块还包括:
子帧状态机销毁单元,用于销毁子帧的状态机对象。
优选的,还包括:
状态机控制模块,所述状态机映射表位于所述状态机控制模块内。
优选的,所述状态机映射表中帧对象和对应的状态机对象之间的映射关系以二叉树结构存储。
与现有技术相比,本申请具有以下优点:
针对现有技术中若需要了解一个网页的生命周期状态,需要在所涉及的浏览器控件的各个事件中通过对各个主帧子帧逐个编码的方式去记录,考虑到现有的处理方式会导致极高的开发和维护成本,我们提出了在事件的入口处为每个帧对象创建对应的状态机对象,并记录当前事件对网页生命状态的影响,而外部应用只需通过状态机对象的生命周期信息了解网页的生命周期状态并作出响应,而不必关心众多事件对网页生命周期状态的影响,因此大大降低了开发工作量和维护成本。
附图说明
图1是一种包含多个子帧网页界面的示意图;
图2是本申请一种网页生命周期控制方法实施例一的流程图;
图3是本申请一种网页生命周期控制方法实施例二的流程图;
图4是本申请一种网页生命周期控制装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图2,示出了本申请一种利用网页生命周期优化应用的方法的一实施例的流程示意图。所述方法包括:
步骤201,依据浏览器控件对象的当前事件获取当前网页的帧对象。
当浏览器控件窗口包含主网页和一个或多个嵌套的子网页时,所述主网页称为主帧,所述子网页称为子帧。其中,主帧、子帧分别对应不同的WebBrowser对象。本领域技术人员容易理解,浏览器控件WebBrowser通过事件与外部进行交互,例如,当用户在浏览器地址栏中输入URL回车进行浏览操作时,WebBrowser控件就会触发BeforeNavigate事件。从事件所传递的参数中可获取触发该事件的WebBrowser对象,即帧对象。
当浏览器网页中包括主帧和一个或多个子帧时,触发BeforeNavigate事件的即可能是主帧,也有可能是其中任意一个子帧,因此基于事件参数所获取的帧对象就可能是主帧的帧对象,或任意一个子帧的帧对象。
步骤202,获取所述帧对象的状态机对象。
具体而言:在创建帧对象的状态机对象之前,依据预置的状态机映射表,判断所述帧对象的状态机对象是否存在;若不存在,则创建当前帧对象的状态机对象,并在状态机映射表中存储当前帧对象和对应状态机对象的映射关系;若存在,依据所述状态机映射表,获取所述帧对象的状态机对象。
对于一个网页的生命周期而言,当用户输入URL并按下回车键后,首先会触发导航前事件BeforeNavigate事件,因此该事件也就是网页生命周期的起始/入口事件。之后,随着用户的操作会继续触发其他事件,如导航完成时发生触发的NavigateComplete2事件,下载开始时触发的DownloadBegin事件等。
本申请所提供的方法既可以在网页生命周期的入口事件BeforeNavigate中使用,也可结合具体实施情况对其他事件做响应处理,对此我们不做具体限制,可由本领域技术人员在实施本申请时根据实际应用情况自行处理。
步骤203,基于所述状态机对象,记录当前网页的生命周期信息。
网页的生命周期标识用于记录网页在整个生命周期中的状态变化,以下举例说明:
unkown:初始状态
newborn:当网页的生命周期刚开始时,既BeforeNavigate事件被第一次触发时生命周期标识置为newborn。
adult:当网页加载完成时,即NavigateComplete2事件被触发后生命周期标识置为adult。
dead:网页生命周期结束,即当BeforeNavigate事件被再次触发时生命周期标识被置为dead,此时有新的URL被用户输入,之前网页生命周期结束,同时新网页的生命周期开始。
以上生命周期标识示例仅是为了便于理解本申请的内容,本领域技术人员容易理解,在实施本申请时,可根据实际应用的需要,设置网页生命周期的中间过程状态标识,并且可在不同的事件入口处,更改所述生命周期标识。不仅如此,除了上述生命周期标识外,还可以在状态机对象中加入别的状态标识,以实现不同的应用操作,例如:针对下载事件记录每一个下载线程的下载状态,并在DownloadBegin和DownloadComplete事件中更新下载线程的状态标识。
步骤204,各应用依据自身需求,获取相应网页的生命周期信息;并基于所获取的生命周期信息,执行相应优化操作。
外部应用通过获取帧对象的状态机中的生命周期信息即可得知该帧对象当前网页生命周期的变化情况,并作出响应处理。例如,外部应用通过状态机对象的生命周期信息已经获知对应的网页生命周期已结束,那么就可以释放外部应用中与该网页有关的资源,例如在应用中为处理网页显示效果有关的专用程序、存储空间等,若得知该网页生命周期已结束,就可以及时释放这些程序所占用的***资源、存储空间等。
参照实施例一和图3,图3示出了本申请一种网页生命周期控制方法的实施例二的流程示意图。相对实施例一,实施例二还进一步包括了对销毁状态机的描述,所述网页生命周期控制方法具体包括:
步骤301,依据浏览器控件对象的当前事件获取当前网页的帧对象。
步骤302,依据预置的状态机映射表,判断所述帧对象的状态机对象是否存在;若不存在,创建所述帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系;若存在,执行步骤303。
预置的状态机映射表中存储有帧对象和对应状态机对象之间的映射关系,以便记录是否为该帧对象创建了状态机对象。以下为一个状态机映射表的示例,其中,映射表中存储帧对象指针key和状态机对象的value构成一个键值对:
本申请中,所述状态机映射表即可以来自应用程序外部,如数据库、外置文件等;另外,所述状态机映射表也可以置于程序内部,如同一个DLL、应用程序内。
优选的,预置状态机控制对象,所述状态机映射表置于所述状态机控制对象中。所述状态控制对象位于全局空间中,即对于整个应用程序或DLL中的任何方法或事件都可通过所述状态机控制对象查找所述状态机映射表。
优选的,将帧对象和对应的状态机对象按二叉树结构存储在所述状态机映射表中。帧对象和状态机对象的映射关系可按照数组等多种数据结构进行存储。但是,我们以二叉树结构存储帧对象和状态机对象,在按照二叉树结构查找时,可显著提高查找效率,减少查找所耗时间和***资源。
步骤303,依据所述状态机映射表,获取所述帧对象的状态机对象。
步骤304,基于所述状态机对象,记录当前网页的生命周期信息。
步骤305,如果当前事件为导航前事件BeforeNagvate并且状态机对象中的生命周期信息为活动状态,则销毁帧对象当前的状态机对象,然后创建新的状态机对象,并将帧对象和新创建的状态机对象的映射关系存储或更新到状态机映射表中。
对同一个帧对象的状态机对象而言,当帧对象中的网页窗口被第一次导航时触发BeforeNavigate事件时,其对应的状态机对象中的生命周期信息被标记为活动状态,在本例中该状态为newborn,之后随着其他事件被触发,所述生命周期状态标识可能被标记为其他活动状态,如adult。因此,若当前BeforeNavigate事件被再次触发,同时生命周期状态标识不为unkown,而是一个中间的生命状态,则说明当前帧对象是第二次触发了BeforeNavigate事件,此时有新的URL被导航,也意味着该帧对象之前的网页生命周期结束。
首先根据当前帧对象从预置的状态机映射表中找到并销毁帧对象当前的状态机对象;然后为帧对象创建新的状态机对象,并将帧对象和状态机对象的映射关系存储或更新到状态机映射表中。更新时即可以删除原有的映射关系后重新存储,也可以是按照帧对象找到并更新原有的映射关系。
步骤306,进一步的,通过判断当前帧对象是主帧或子帧,来分别执行相应的销毁状态机对象操作。
在本申请中,当我们调用状态机对象的方法实施操作时都会传入主帧对象和当前帧对象:若当前帧对象指针与主帧对象指针相同,则当前帧对象为主帧;若不同,则当前帧对象为子帧。
若当前帧对象为主帧,销毁该主帧的状态机对象;遍历状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象;然后,从状态机映射表中删除主帧和对应的所有子帧与各自状态机对象的映射关系。主帧销毁时,会触发当前全局空间的释放,也会触发位于全局空间中状态机管理类的析构方法释放空间,由状态机管理类中析构方法触发释放所有子帧状态机对象。
若当前帧对象为子帧,依据该子帧和状态机映射表找到对应的状态机对象然后销毁,同时删除状态机映射表中对应的映射关系。子帧状态机对象销毁时,会触发状态机对象的析构方法,释放对应的内存资源。
该步骤为可选步骤。当网页的生命周期未结束前,外部应用可通过对应的状态机对象中的生命周期信息来获得当前网页的生命周期。
优选的,本申请将外部应用所做的与网页生命周期有关的处理写在状态机对象的接口中,这样,当状态机对象被销毁时,该外部应用可通过接口即时获知对应的状态机对象是否被销毁,若销毁则说明该状态机对象的网页生命周期已结束。
以上通过几个实施例对本申请的一种利用网页生命周期优化应用的方法做了描述。为了更好地理解本申请的内容,下面结合一具体的实例部分伪码对本申请所述方法作进一步描述:
S1,首先,定义状态机管理类CFrameStateMachineManager和状态机类CFrameStateMachine
S2,在程序初始化时,创建全局性的状态机管理对象CFrameStateMachineManager。
状态机管理对象CFrameStateMachineManager中预置有状态机映射表,该状态机映射表初始值为空。
S3,当用户在浏览器地址栏中输入URL回车浏览网页后,触发BeforeNavigate事件。
S4,从BeforeNavigate事件的参数中获取触发该事件的帧对象。调用状态机管理对象CFrameStateMachineManager中的FindByBrowser()方法判断该帧对象在状态机管理对象CFrameStateMachineManager内的状态机映射表中是否存在。
S5,若不存在,依据当前触发BeforeNavigate事件的帧对象,调用状态机管理对象CFrameStateMachineManager中AppendBrowser()方法为当前帧对象创建一个状态机对象,并向状态机映射表中增加一条映射关系记录。
S6,若存在且当前事件为BeforeNavigate事件,意味着当前帧对象之前已触发过一次BeforeNavigate事件,再次触发,对于子帧来说,意味着子帧要被导航至新的URL,当前URL所对应的网页生命周期结束;而如果是主帧再次触发BeforeNavigate事件,则不仅意味着主帧当前URL所对应的网页生命周期结束,而且该主帧内所有子帧当前URL所对应网页的生命周期都要被结束。
具体的,调用状态机对象CFrameStateMachine中的IsTop()方法判断当前帧对象是否为主帧。在IsTop()方法中,通过比较当前帧对象的指针地址与记录的主帧原始指针地址是否一致,若一致,则当前帧对象为主帧,否则为子帧。
若为主帧,从状态机管理对象CFrameStateMachineManager中的状态机映射表中查找当前主帧的状态机对象以及该主帧所有子帧的状态机对象,然后,对主帧和该主帧所有子帧调用状态机管理对象中的ClearByBrowser()方法清除状态机对象,从状态机映射表中删除主帧以及该主帧所有子帧在状态机映射表中的映射关系,同时释放所述主帧、子帧以及所有对应状态机对象所占用的内存资源。
若为子帧,对该子帧调用状态机管理对象中的ClearByBrowser()方法清除状态机对象,从状态机映射表中删除该子帧在状态机映射表中的映射关系,同时释放所述子帧和所有对应状态机对象所占用的内存资源。
S61,依据当前触发BeforeNavigate事件的帧对象,调用状态机管理对象CFrameStateMachineManager中AppendBrowser()方法为当前帧对象创建一个状态机对象,并向状态机映射表中增加一条映射关系记录。
在其他事件的入口一般仅涉及对状态机中网页生命周期信息的修改,这里不再赘述。
以下给出上述实例中所用到的状态机管理类CFrameStateMachineManager和状态机类CFrameStateMachine中的部分属性、方法,以供本领域技术人员更好理解本申请:
状态机管理类CFrameStateMachineManager
(1)状态机映射表map
map中存放的key->value形式的键值对。用帧对象的指针作为key,用状态机CFrameStateMachine对象作为value。
(2)AppendBrowser(IWebBrowser2*pBrowser)方法
类CFrameStateMachineManager提供了AppendBrowser方法,该方法可以追加一个CFrameStateMachine对象。方法内部实现是先根据传入的帧对象指针pBrowser从状态机映射表map中查找Key是否存在,如果不存在则创建一个新的CFrameStateMachine对象并在状态机映射表map中记录帧对象指针pBrowser和对应的CFrameStateMachine对象,如果存在则直接返回存在的这个CFrameStateMachine对象。
(3)ClearByBrowser(IWebBrowser2*pBrowser)方法
类CFrameStateMachineManager提供了ClearByBrowser方法,该方法可以清除一个内部管理CFrameStateMachine对象。方法内部实现是先根据帧对象的指针pBrowser从状态机映射表map中查找key是否存在,如果存在便从状态机映射表中清除这个key和value,如果不存在则忽略。
(4)FindByBrowser(IWebBrowser2*pBrowser)方法
类CFrameStateMachineManager提供了FindByBrowser方法,该方法可以查找一个内部管理CFrameStateMachine对象。方法内部实现是先根据帧对象的指针pBrowser来查找key是否存在,如果存在则返回存在的这个CFrameStateMachine对象,如果不存在则返回NULL。
状态机类CFrameStateMachine
状态机类CFrameStateMachine负责一个帧对象中当前URL所对应网页的生命周期管理:
(1)DWORD m_dwWebBrowser属性
类CFrameStateMachine中定义了m_dwWebBrowser属性,记录了当前帧对象的指针。
(2)DWORD m_dwTopWebBrowser属性
类CFrameStateMachine中定义了m_dwTopWebBrowser属性,记录了主帧WebBrowser的指针。
(3)BOOL IsTop()方法
类CFrameStateMachine中定义了IsTop方法,如果返回TRUE则表明状态机对应的帧是主帧,否则为子帧。
(4)Init(IWebBrowser2Ptr spWebBrowser,IWebBrowser2PtrspTopWebBrowser)方法
类CFrameStateMachine中定义了Init方法,该方法是帧对象的BeforeNavigate事件时调用的,用来初始化帧状态机对象的。该方法传入了当前帧和主帧的指针,方法内部根据当前帧状态机的状态来进行相应的操作。如果帧状态机是第一次触发的Init则设置当前帧和主帧的属性,同时改变帧状态机对象中生命周期标识为newborn;如果不是第一次触发的,则获得状态机对象的当前状态,根据当前状态执行应用程序相应的操作。
本申请提供的一种利用网页生命周期优化应用的方法,可方便的对包含多个子帧的网页的生命周期进行管理,将各网页的生命周期信息提供给应用,应用根据自身的需求获取网页的生命周期信息,并执行相应的优化操作。
以上通过实施例对本申请所公开的一种利用网页生命周期优化应用做了详细描述,下面参照上述实施例的内容,对本申请所涉及一种利用网页生命周期优化应用的装置进行描述,包括:
帧对象获取模块410,用于依据浏览器控件对象的当前事件获取当前网页的帧对象;
状态机获取模块420,用于获取帧对象的状态机对象;
生命周期信息记录模块430,用于基于状态机对象,记录网页的生命周期信息;
生命周期信息发送模块440,用于根据应用请求向应用发送网页的生命周期信息。
优选的,还包括:
状态机映射表450,用于存储帧对象和对应状态机对象的映射关系;
所述状态机获取模块420还包括:
状态机创建单元421,用于依据状态机映射表,判断帧对象的状态机对象是否存在;若不存在,创建帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
优选的,所述状态机获取模块420还包括:
状态机查找单元422,如果帧对象的状态机对象在状态机映射表中存在,,查找并获得所述帧对象的状态机对象。
优选的,还包括:
状态机销毁模块460,用于销毁状态机对象;
映射删除模块470,用于删除状态机映射表中帧对象与状态机对象的映射关系;
销毁验证模块480,用于判断如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则通知状态机销毁模块销毁状态机对象,通知映射删除模块删除帧对象与状态机对象的映射关系。
优选的,所述状态机销毁模块460还包括:
主帧状态机销毁单元461,用于销毁主帧的状态机对象;依据述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
优选的,所述状态机销毁模块460还包括:
子帧状态机销毁单元462,用于销毁子帧的状态机对象。
优选的,还包括:
状态机控制模块490,所述状态机映射表位于所述状态机控制模块内。
优选的,所述状态机映射表450中帧对象和对应的状态机对象之间的映射关系以二叉树结构存储。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种利用网页生命周期优化应用的方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
本发明公开了A1、一种利用网页生命周期优化应用的方法,包括:
依据浏览器控件对象的当前事件获取当前网页的帧对象;
获取所述帧对象的状态机对象;
基于所述状态机对象,记录当前网页的生命周期信息;
各应用依据自身需求,获取相应网页的生命周期信息;并基于所获取的生命周期信息,执行相应优化操作。
A2、如A1所述的方法,所述基于所获取的生命周期信息,执行相应优化操作包括:
基于所获取网页的生命周期信息判断当前网页的生命周期是否结束,若结束,释放与所述网页对应的***资源。
A3、如A1所述的方法,所述获取所述帧对象的状态机对象包括:
依据预置的状态机映射表,判断所述帧对象的状态机对象是否存在;
若不存在,创建所述帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
A4、如A3所述的方法,所述获取所述帧对象的状态机对象还包括:
若所述帧对象的状态机对象在所述状态机映射表中存在,依据所述状态机映射表,查找并获得所述帧对象的状态机对象。
A5、如A4所述的方法,还包括:
如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则销毁所述状态机对象;及,
从所述状态机映射表中删除所述帧对象和对应的状态机对象的映射关系;
为所述帧对象创建新的状态机对象,并将所述帧对象和新创建的状态机对象的映射关系存储到所述状态机映射表中。
A6、如A5所述的方法,所述销毁所述状态机对象还包括:
若所述帧对象为主帧,销毁所述主帧的状态机对象;
依据所述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
A7、如A6所述的方法,所述销毁所述状态机对象还包括:
若所述帧对象为子帧,销毁所述子帧的状态机对象。
A8、如A4所述的方法,所述方法还包括:
预置状态机控制对象,所述状态机映射表置于所述状态机控制对象中。
A9、如A4或A8所述的方法,所述在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系,包括:
将所述帧对象和对应的状态机对象按二叉树结构存储在所述状态机映射表中。
本发明还公开了B10、一种利用网页生命周期优化应用的装置,包括:
帧对象获取模块,用于依据浏览器控件对象的当前事件获取当前网页的帧对象;
状态机获取模块,用于获取帧对象的状态机对象;
生命周期信息记录模块,用于基于状态机对象,记录网页的生命周期信息;
生命周期信息发送模块,用于根据应用请求向应用发送网页的生命周期信息。
B11、如B10所述的装置,其特征在于,还包括:
状态机映射表,用于存储帧对象和对应状态机对象的映射关系;
所述状态机获取模块还包括:
状态创建单元,用于依据状态机映射表,判断帧对象的状态机对象是否存在;若不存在,创建帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
B12、如B10所述的装置,所述状态机获取模块还包括:
状态机查找单元,如果帧对象的状态机对象在状态机映射表中存在,,查找并获得所述帧对象的状态机对象。
B13、如B10所述的装置,还包括:
状态机销毁模块,用于销毁状态机对象;
映射删除模块,用于删除状态机映射表中帧对象与状态机对象的映射关系;
销毁验证模块,用于判断如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则通知状态机销毁模块销毁状态机对象,通知映射删除模块删除帧对象与状态机对象的映射关系。
B14、如B13所述的装置,所述状态机销毁模块还包括:
主帧状态机销毁单元,用于销毁主帧的状态机对象;依据述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
B15、如B13所述的装置,所述状态机销毁模块还包括:
子帧状态机销毁单元,用于销毁子帧的状态机对象。
B16、如B10所述的装置,还包括:
状态机控制模块,所述状态机映射表位于所述状态机控制模块内。
B17、如B16所述的装置,所述状态机映射表中帧对象和对应的状态机对象之间的映射关系以二叉树结构存储。
Claims (17)
1.一种利用网页生命周期优化应用的方法,其特征在于,包括:
依据浏览器控件对象的当前事件获取当前网页的帧对象;
获取所述帧对象的状态机对象;
基于所述状态机对象,记录当前网页的生命周期信息;
各应用依据自身需求,获取相应网页的生命周期信息;并基于所获取的生命周期信息,执行相应优化操作。
2.如权利要求1所述的方法,其特征在于,所述基于所获取的生命周期信息,执行相应优化操作包括:
基于所获取网页的生命周期信息判断当前网页的生命周期是否结束,若结束,释放与所述网页对应的***资源。
3.如权利要求1所述的方法,其特征在于,所述获取所述帧对象的状态机对象包括:
依据预置的状态机映射表,判断所述帧对象的状态机对象是否存在;
若不存在,创建所述帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
4.如权利要求3所述的方法,其特征在于,所述获取所述帧对象的状态机对象还包括:
若所述帧对象的状态机对象在所述状态机映射表中存在,依据所述状态机映射表,查找并获得所述帧对象的状态机对象。
5.如权利要求4所述的方法,其特征在于,还包括:
如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则销毁所述状态机对象;及,
从所述状态机映射表中删除所述帧对象和对应的状态机对象的映射关系;
为所述帧对象创建新的状态机对象,并将所述帧对象和新创建的状态机对象的映射关系存储到所述状态机映射表中。
6.如权利要求5所述的方法,其特征在于,所述销毁所述状态机对象还包括:
若所述帧对象为主帧,销毁所述主帧的状态机对象;
依据所述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
7.如权利要求6所述的方法,其特征在于,所述销毁所述状态机对象还包括:
若所述帧对象为子帧,销毁所述子帧的状态机对象。
8.如权利要求4所述的方法,其特征在于,所述方法还包括:
预置状态机控制对象,所述状态机映射表置于所述状态机控制对象中。
9.如权利要求4或8所述的方法,其特征在于,所述在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系,包括:
将所述帧对象和对应的状态机对象按二叉树结构存储在所述状态机映射表中。
10.一种利用网页生命周期优化应用的装置,其特征在于,包括:
帧对象获取模块,用于依据浏览器控件对象的当前事件获取当前网页的帧对象;
状态机获取模块,用于获取帧对象的状态机对象;
生命周期信息记录模块,用于基于状态机对象,记录网页的生命周期信息;
生命周期信息发送模块,用于根据应用请求向应用发送网页的生命周期信息。
11.如权利要求10所述的装置,其特征在于,还包括:
状态机映射表,用于存储帧对象和对应状态机对象的映射关系;
所述状态机获取模块还包括:
状态创建单元,用于依据状态机映射表,判断帧对象的状态机对象是否存在;若不存在,创建帧对象的状态机对象,在所述状态机映射表中存储所述帧对象和对应状态机对象的映射关系。
12.如权利要求10所述的装置,其特征在于,所述状态机获取模块还包括:
状态机查找单元,如果帧对象的状态机对象在状态机映射表中存在,查找并获得所述帧对象的状态机对象。
13.如权利要求10所述的装置,其特征在于,还包括:
状态机销毁模块,用于销毁状态机对象;
映射删除模块,用于删除状态机映射表中帧对象与状态机对象的映射关系;
销毁验证模块,用于判断如果当前事件为导航前事件且状态机对象中的生命周期信息为活动状态,则通知状态机销毁模块销毁状态机对象,通知映射删除模块删除帧对象与状态机对象的映射关系。
14.如权利要求13所述的装置,其特征在于,所述状态机销毁模块还包括:
主帧状态机销毁单元,用于销毁主帧的状态机对象;依据所述状态机映射表获取并销毁所述主帧对应的全部子帧的状态机对象。
15.如权利要求13所述的装置,其特征在于,所述状态机销毁模块还包括:
子帧状态机销毁单元,用于销毁子帧的状态机对象。
16.如权利要求13所述的装置,其特征在于,还包括:
状态机控制模块,所述状态机映射表位于所述状态机控制模块内。
17.如权利要求16所述的装置,其特征在于,所述状态机映射表中帧对象和对应的状态机对象之间的映射关系以二叉树结构存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510146183.2A CN104715056B (zh) | 2012-03-31 | 2012-03-31 | 一种利用网页生命周期优化应用的方法和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510146183.2A CN104715056B (zh) | 2012-03-31 | 2012-03-31 | 一种利用网页生命周期优化应用的方法和装置 |
CN201210093711.9A CN102662668B (zh) | 2012-03-31 | 2012-03-31 | 一种利用网页生命周期优化应用的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210093711.9A Division CN102662668B (zh) | 2012-03-31 | 2012-03-31 | 一种利用网页生命周期优化应用的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104715056A CN104715056A (zh) | 2015-06-17 |
CN104715056B true CN104715056B (zh) | 2018-12-04 |
Family
ID=53414382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510146183.2A Active CN104715056B (zh) | 2012-03-31 | 2012-03-31 | 一种利用网页生命周期优化应用的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104715056B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930205A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种基于状态机模式的业务状态处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744512A (zh) * | 2004-08-30 | 2006-03-08 | 华为技术有限公司 | 网络资源管理方法 |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN102375758A (zh) * | 2010-08-20 | 2012-03-14 | 联芯科技有限公司 | 移动通信设备浏览器防假死方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100180330A1 (en) * | 2009-01-09 | 2010-07-15 | Microsoft Corporation | Securing Communications for Web Mashups |
-
2012
- 2012-03-31 CN CN201510146183.2A patent/CN104715056B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744512A (zh) * | 2004-08-30 | 2006-03-08 | 华为技术有限公司 | 网络资源管理方法 |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN102375758A (zh) * | 2010-08-20 | 2012-03-14 | 联芯科技有限公司 | 移动通信设备浏览器防假死方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104715056A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Adam et al. | A new PHP web application development framework based on MVC architectural pattern and ajax technology | |
US20150220333A1 (en) | Generation of api call graphs from static disassembly | |
US10248581B2 (en) | Guarded memory access in a multi-thread safe system level modeling simulation | |
WO2015019074A1 (en) | Automated application test system | |
CN104731594A (zh) | 一种基于Bootstrap显示运行时定制页面的方法 | |
US9075666B2 (en) | Deferred execution in a multi-thread safe system level modeling simulation | |
US11397608B2 (en) | Multi-dimensional spreadsheet system enabling stack based programming using a virtual machine | |
US9201708B2 (en) | Direct memory interface access in a multi-thread safe system level modeling simulation | |
JP4695903B2 (ja) | Webアプリケーションシステム、そのプログラム | |
US11119899B2 (en) | Determining potential test actions | |
CN104715056B (zh) | 一种利用网页生命周期优化应用的方法和装置 | |
JP4754021B1 (ja) | データベース変換システム | |
CN104267954A (zh) | 一种用户界面中所包含的部件的生成方法和装置 | |
CN114218278A (zh) | http接口的数据表字段查询方法及*** | |
Wu et al. | Composable and efficient functional big data processing framework | |
Lazovik et al. | Runtime modifications of spark data processing pipelines | |
CN102662668B (zh) | 一种利用网页生命周期优化应用的方法和装置 | |
US11521089B2 (en) | In-database predictive pipeline incremental engine | |
Xu | The universal design solution for Ajax-based three-tier architecture | |
Hai et al. | Multi-threaded on-the-fly model generation of malware with hash compaction | |
CN109062954A (zh) | 一种高效的数据交换和数据源隔离*** | |
CN108959489A (zh) | 一种高效的数据交换和数据源隔离方法 | |
Catrina | A Comparative Analysis of Spring MVC and Spring WebFlux in Modern Web Development | |
Nguyen | Investication, building, and piloting of a low-code system for enterprice development | |
CN116302026A (zh) | 应用程序智能刷新方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220727 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |