著录项信息
专利名称 | 一种多窗口的实现方法及装置 |
申请号 | CN201110365851.2 | 申请日期 | 2011-11-17 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2013-05-22 | 公开/公告号 | CN103116503A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5;;;G;0;6;F;9;/;4;6查看分类表>
|
申请人 | 华为软件技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 邱香膏;徐雪松;李国军;黄永浩 |
代理机构 | 北京三高永信知识产权代理有限责任公司 | 代理人 | 关文魁 |
摘要
本发明实施例提供了一种多窗口的实现方法及装置,涉及通信领域,所述方法包括:终端加载主窗口,并在加载时将窗口操作函数加载到所述主窗口中;当需要打开新窗口时,从所述主窗口中调用所述窗口操作函数中的窗口创建函数;通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口。所述装置包括:加载模块、调用模块和打开模块。本发明能够减少占用系统资源。
1.一种多窗口的实现方法,其特征在于,所述方法包括:
终端加载主窗口,并在加载时将窗口操作函数加载到所述主窗口中;
当需要打开新窗口时,从所述主窗口中调用所述窗口操作函数中的窗口创建函数;所述窗口创建函数包括:用于创建以Frame控件为载体的所述新窗口的窗口创建函数,和/或,用于创建以Widget控件为载体的所述新窗口的窗口创建函数;
通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口。
2.如权利要求1所述的方法,其特征在于,
所述终端在加载所述主窗口时,若解析到用于打开新窗口的代码,则确定需要打开新窗口;或,
所述终端在加载主窗口后,接收到用户在所述主窗口中提交的用于打开新窗口的请求,则确定需要打开新窗口,并根据所述请求获取用于打开所述新窗口的代码。
3.如权利要求2所述的方法,其特征在于,从所述主窗口中调用所述窗口操作函数中的窗口创建函数,包括:
从所述用于打开新窗口的代码中提取窗口创建函数的标识,从所述主窗口中调用所述窗口创建函数的标识对应的窗口创建函数。
4.如权利要求1-3任一项所述的方法,其特征在于,所述通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口,包括:
所述终端通过所述主窗口的进程运行所述窗口创建函数,并获取所述新窗口的窗口配置信息;
根据所述新窗口的窗口配置信息,生成所述新窗口,并将所述新窗口插入到所述主窗口的窗口数组中。
5.如权利要求4所述的方法,其特征在于,
如果需创建的新窗口是以框架Frame控件为载体的窗口,则所述窗口配置信息,包括统一资源定位符URL、所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口中的位置坐标;所述根据所述新窗口的窗口配置信息,生成所述新窗口包括:
根据所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;
并根据所述URL下载所述新窗口的内容,在所述新窗口的窗体中渲染所述内容。
6.如权利要求4所述的方法,其特征在于,如果需创建的新窗口是以小窗体Widget控件为载体的窗口,则所述窗口配置信息,包括所述新窗口的标识、标题、宽度、高度、窗口内容、色彩空间RGBA格式以及所述新窗口在所述主窗口的位置坐标;所述根据所述新窗口的窗口配置信息,生成所述新窗口包括:
根据所述新窗口的标识、标题、宽度、高度、RGBA格式以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;
并向所述新窗口的窗体中加载所述窗口内容。
7.如权利要求1所述的方法,其特征在于,所述通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口之后,还包括:
接收用户提交的事件,获取焦点所在的窗口的标识,根据所述获取的窗口的标识从所述主窗口的窗口数组中获取对应的窗口,将所述事件提交给所述获取的窗口,由所述获取的窗口对所述事件进行处理。
8.一种多窗口的实现装置,其特征在于,所述装置包括:
加载模块,用于加载主窗口,并在加载时将窗口操作函数加载到所述主窗口中;
调用模块,用于当需要打开新窗口时,从所述主窗口中调用所述窗口操作函数中的窗口创建函数;所述窗口创建函数包括:用于创建以Frame控件为载体的所述新窗口的窗口创建函数,和/或,用于创建以Widget控件为载体的所述新窗口的窗口创建函数;
打开模块,用于通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口。
9.如权利要求8所述的装置,其特征在于,所述调用模块根据所述加载模块在加载所述主窗口时,解析到的用于打开新窗口的代码,确定需要打开新窗口;或,
在所述加载模块在加载主窗口后,根据接收到的用户在所述主窗口中提交的用于打开新窗口的请求,确定需要打开新窗口,并根据所述请求获取用于打开所述新窗口的代码。
10.如权利要求9所述的装置,其特征在于,
所述调用模块,具体用于在确定当需要打开新窗口时,从所述用于打开新窗口的代码中提取窗口创建函数的标识,从所述主窗口中调用所述窗口创建函数的标识对应的窗口创建函数。
11.如权利要求8-10任一项所述的装置,其特征在于,所述打开模块具体用于通过所述主窗口的进程运行所述窗口创建函数,并获取所述新窗口的窗口配置信息;根据所述新窗口的窗口配置信息,生成所述新窗口;将所述新窗口插入到所述主窗口的窗口数组中。
12.如权利要求11所述的装置,其特征在于,
如果需创建的新窗口是以框架Frame控件为载体的窗口,则所述窗口配置信息,包括统一资源定位符URL、所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口中的位置坐标;所述打开模块在生成所述新窗口时,具体用于
根据所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;
并根据所述URL下载所述新窗口的内容,在所述新窗口的窗体中渲染所述内容。
13.如权利要求11所述的装置,其特征在于,如果需创建的新窗口是以小窗体Widget控件为载体的窗口,则所述窗口配置信息,包括所述新窗口的标识、标题、宽度、高度、窗口内容、色彩空间RGBA格式以及所述新窗口在所述主窗口的位置坐标;所述打开模块在生成所述新窗口时,具体用于
根据所述新窗口的标识、标题、宽度、高度、RGBA格式以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;
并向所述新窗口的窗体中加载所述窗口内容。
14.如权利要求8所述的装置,其特征在于,所述装置还包括:
处理模块,用于接收用户提交的事件,获取焦点所在的窗口的标识,根据所述获取的窗口的标识从所述主窗口的窗口数组中获取对应的窗口,将所述事件提交给所述获取的窗口,由所述获取的窗口对所述事件进行处理。
一种多窗口的实现方法及装置\n技术领域\n[0001] 本发明涉及通信领域,特别涉及一种多窗口的实现方法及装置。\n背景技术\n[0002] 目前当使用终端的浏览器打开一个窗口时,还可以从该窗口中打开一个或多个新窗口,实现过程可以具体为:通过浏览器打开一个窗口,若该窗口的文本文件中包括一个或多个用于打开新窗口的代码,则调用浏览器自带的窗口创建函数,并将需要打开的新窗口的相关配置信息传输给浏览器,该相关配置信息可以包括URL(Uniform/Universal Resource Locator,统一资源定位符)等信息;浏览器根据相关配置信息打开新窗口。\n[0003] 调用浏览器自带的窗口创建函数时,系统会创建一个进程,该进程来运行浏览器浏览器自带的窗口创建函数并通过该进程打开新窗口,如此系统创建的进程数目会随着打开的新窗口的数目呈线性增长,而占用大量的系统资源。\n发明内容\n[0004] 为了减少占用系统资源,本发明实施例提供了一种多窗口的实现方法及装置。所述技术方案如下:\n[0005] 一种多窗口的实现方法,所述方法包括:\n[0006] 终端加载主窗口,并在加载时将窗口操作函数加载到所述主窗口中;\n[0007] 当需要打开新窗口时,从所述主窗口中调用所述窗口操作函数中的窗口创建函数;\n[0008] 通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口。\n[0009] 所述终端在加载所述主窗口时,若解析到用于打开新窗口的代码,则确定需要打开新窗口;或,\n[0010] 所述终端在加载主窗口后,接收到用户在所述主窗口中提交的用于打开新窗口的请求,则确定需要打开新窗口,并根据所述请求获取用于打开所述新窗口的代码。\n[0011] 从所述主窗口中调用所述窗口操作函数中的窗口创建函数,包括:\n[0012] 从所述用于打开新窗口的代码中提取窗口创建函数的标识,从所述主窗口中调用所述窗口创建函数的标识对应的窗口创建函数。\n[0013] 所述通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口,包括:\n[0014] 所述终端通过所述主窗口的进程运行所述窗口创建函数,并获取所述新窗口的窗口配置信息;\n[0015] 根据所述新窗口的窗口配置信息,生成所述新窗口,并将所述新窗口插入到所述主窗口的窗口数组中。\n[0016] 如果需创建的新窗口是以框架Frame控件为载体的窗口,则所述窗口配置信息,包括统一资源定位符URL、所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口中的位置坐标;所述根据所述新窗口的窗口配置信息,生成所述新窗口包括:\n[0017] 根据所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;\n[0018] 并根据所述URL下载所述新窗口的内容,在所述新窗口的窗体中渲染所述内容。\n[0019] 如果需创建的新窗口是以小窗体Widget控件为载体的窗口,则所述窗口配置信息,包括所述新窗口的标识、标题、宽度、高度、窗口内容、色彩空间RGBA格式以及所述新窗口在所述主窗口的位置坐标;所述根据所述新窗口的窗口配置信息,生成所述新窗口包括:\n[0020] 根据所述新窗口的标识、标题、宽度、高度、RGBA格式以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;\n[0021] 并向所述新窗口的窗体中加载所述窗口内容。\n[0022] 所述通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口之后,还包括:\n[0023] 接收用户提交的事件,获取焦点所在的窗口的标识,根据所述获取的窗口的标识从所述主窗口的窗口数组中获取对应的窗口,将所述事件提交给所述获取的窗口,由所述获取的窗口对所述事件进行处理。\n[0024] 一种多窗口的实现装置,所述装置包括:\n[0025] 加载模块,用于加载主窗口,并在加载时将窗口操作函数加载到所述主窗口中;\n[0026] 调用模块,用于当需要打开新窗口时,从所述主窗口中调用所述窗口操作函数中的窗口创建函数;\n[0027] 打开模块,于通过所述窗口创建函数在所述主窗口的进程中打开所述新窗口。\n[0028] 所述调用模块根据所述加载模块在加载所述主窗口时,解析到的用于打开新窗口的代码,确定需要打开新窗口;或,\n[0029] 在所述加载模块在加载主窗口后,根据接收到的用户在所述主窗口中提交的用于打开新窗口的请求,确定需要打开新窗口,并根据所述请求获取用于打开所述新窗口的代码。\n[0030] 所述调用模块,具体用于在确定当需要打开新窗口时,从所述用于打开新窗口的代码中提取窗口创建函数的标识,从所述主窗口中调用所述窗口创建函数的标识对应的窗口创建函数。\n[0031] 所述打开模块具体用于通过所述主窗口的进程运行所述窗口创建函数,并获取所述新窗口的窗口配置信息;根据所述新窗口的窗口配置信息,生成所述新窗口;将所述新窗口插入到所述主窗口的窗口数组中。\n[0032] 如果需创建的新窗口是以框架Frame控件为载体的窗口,则所述窗口配置信息,包括统一资源定位符URL、所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口中的位置坐标;所述打开模块在生成所述新窗口时,具体用于[0033] 根据所述新窗口的标识、宽度、高度、z次序、窗体可见值以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;\n[0034] 并根据所述URL下载所述新窗口的内容,在所述新窗口的窗体中渲染所述内容。\n[0035] 如果需创建的新窗口是以小窗体Widget控件为载体的窗口,则所述窗口配置信息,包括所述新窗口的标识、标题、宽度、高度、窗口内容、色采空间RGBA格式以及所述新窗口在所述主窗口的位置坐标;所述打开模块在生成所述新窗口时,具体用于[0036] 根据所述新窗口的标识、标题、宽度、高度、RGBA格式以及所述新窗口在所述主窗口的位置坐标,创建所述新窗口的窗体;\n[0037] 并向所述新窗口的窗体中加载所述窗口内容。\n[0038] 所述装置还包括:\n[0039] 处理模块,用于接收用户提交的事件,获取焦点所在的窗口的标识,根据所述获取的窗口的标识从所述主窗口的窗口数组中获取对应的窗口,将所述事件提交给所述获取的窗口,由所述获取的窗口对所述事件进行处理。\n[0040] 在本发明实施例中,终端加载主窗口,并在加载时将窗口操作函数加载到主窗口中,当需要打开新窗口时,从主窗口中调用窗口操作函数中的窗口创建函数,通过调用的窗口创建函数在主窗口的进程中打开新窗口,如此可以通过一个主窗口进程来打开需要打开的各新窗口,从而不需要创建新的进程,所以创建的进程数目不会随着需要打开的新窗口的数目呈线性增长,节省大量的系统资源。\n附图说明\n[0041] 图1是本发明一实施例提供的一种多窗口的实现方法流程图;\n[0042] 图2是本发明另一实施例提供的一种多窗口的实现方法流程图;\n[0043] 图3是本发明另一实施例提供的一种多窗口的实现装置示意图。\n具体实施方式\n[0044] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。\n[0045] 如图1所示,本发明实施例提供了一种多窗口的实现方法,包括:\n[0046] 步骤101:终端加载主窗口,并在加载时将窗口操作函数加载到主窗口中;\n[0047] 其中,该终端可以是具有浏览器功能的终端,如,机顶盒。具体的,终端通过浏览器加载主窗口,该主窗口可以是预先设置的,如,机顶盒的主页面,也可以是用户输入的,如由用户输入URL。需要说明的是,本发明实施例中的窗口操作函数可以包括:窗口创建函数、窗口删除函数等,这些窗口操作函数是自定义函数,可以用于在主窗口进程中进行创建、删除窗口等操作,具体可参考表1。\n[0048] 步骤102:当需要打开新窗口时,从主窗口中调用窗口操作函数中的窗口创建函数;\n[0049] 具体的,在加载主窗口的过程中,若解析到用于打开新窗口的代码,则确定需要打开新窗口;或者,在加载主窗口后,终端接收到用户在主窗口中提交的用于打开新窗口的请求,则确定需要打开新窗口,此时,终端根据该请求获取用于打开新窗口的代码。终端从用于打开新窗口的代码中提取窗口创建函数的标识,根据该窗口创建函数的标识从主窗口中调用其对应的窗口创建函数。\n[0050] 步骤103:通过调用的窗口创建函数在主窗口的进程中打开新窗口。\n[0051] 由于窗口创建函数加载在主窗口中,因此调用窗口创建函数时,由主窗口的进程来运行该窗口创建函数,从而由主窗口进程来打开新窗口。\n[0052] 在本发明实施例中,终端利用加载到主窗口中的窗口操作函数,在主窗口进程中打开新窗口,从而不需要为新窗口创建新的进程,减少了进程数目,节省大量的系统资源。\n[0053] 在具体实现时,上述步骤103可以具体包括:\n[0054] 1031:终端通过主窗口的进程运行从主窗口中调用的窗口创建函数,并获取新窗口的窗口配置信息;\n[0055] 具体的,终端可以从用于打开新窗口的代码中获取新窗口的窗口配置信息。其中,如果需创建的新窗口是以Frame控件为载体的窗口,则新窗口的窗口配置信息,包括URL、新窗口的标识、宽度、高度、zIndex(z次序)、窗体可见值以及新窗口在主窗口中的位置坐标;\n如果需创建的新窗口是以Widget控件为载体的窗口,则新窗口的窗口配置信息,包括所述新窗口的标识、标题、宽度、高度、窗口内容、RGBA(Red(红色)Green(绿色)Blue(蓝色)和Alpha(图像通道),色彩空间)格式以及新窗口在主窗口的位置坐标。需要创建的窗口类型由用于打开新窗口的代码决定。\n[0056] 1032:根据新窗口的窗口配置信息,生成新窗口;\n[0057] 具体的,如果创建的是以Frame控件为载体的窗口,则根据新窗口的标识、宽度、高度、zIndex、窗体可见值以及新窗口在主窗口的位置坐标,创建新窗口的窗体;并根据窗口配置信息中的URL下载新窗口的内容,在新窗口的窗体中渲染下载的内容,从而生成新窗口。如果创建的是以Widget控件为载体的窗口,则根据新窗口的标识、标题、宽度、高度、RGBA格式以及新窗口在主窗口的位置坐标,创建新窗口的窗体;并向新窗口的窗体中加载新窗口的窗口内容,从而生成新窗口。\n[0058] 1033:将新窗口插入到主窗口的窗口数组中。\n[0059] 需要说明的是,在加载窗口操作函数到主窗口中时,可进一步在主窗口中创建窗口数组用于存储后面创建的新窗口,具体过程可参考后面具体实施例中的描述。\n[0060] 终端加载主窗口,并在加载时将窗口操作函数加载到主窗口中,当需要打开新窗口时,从主窗口中调用窗口操作函数中的窗口创建函数,通过调用的窗口创建函数在主窗口的进程中打开新窗口,如此可以通过一个主窗口进程来打开需要打开的各新窗口,从而不需要创建新的进程,所以创建的进程数目不会随着需要打开的新窗口的数目呈线性增长,节省大量的系统资源。\n[0061] 下面通过一个具体的实施例来对本发明的方案进行进一步详细的说明,参见图2,本实施例以用户输入URL来打开主窗口为例,该方法包括:\n[0062] 步骤201:终端接收打开主窗口的请求,根据该请求创建主窗口进程;\n[0063] 其中,用户可以在终端的浏览器中输入主窗口的URL,并提交打开主窗口的请求。\n需要说明的是,本实施中是用户输入URL来打开主窗口,在其它实施例中也可以事先在终端中配置主窗口,如,事先存储主窗口对应的URL,当系统启动时,直接获取事先存储主窗口的对应的URL。\n[0064] 步骤202:加载主窗口,并在加载主窗口时,将窗口操作函数加载到主窗口中;\n[0065] 具体地,终端利用创建的主窗口进程加载主窗口,在加载主窗口的过程中,首先将自身存储的窗口操作函数加载到主窗口中,然后根据主窗口对应的URL,获取对应的文本文件,该文本文件为实现主窗口的Html(Hypertext Markup Language,文本标记语言)代码或xml(Extensible Markup Language,可扩展标记语言)代码等;终端对获取的代码进行解析并加载。\n[0066] 其中,窗口操作函数是自定义函数,可预先存储于终端中,其具体结构可以如表1所示:\n[0067] 表1\n[0068]\n[0069]\n[0070] 如表1所示,窗口操作函数包括窗口创建函数,窗口创建函数用于在主窗口中创建新窗口,在实际应用时,窗口创建函数可以包括两种类型的窗口创建函数,一种用于创建以Frame控件为载体的新窗口,本发明实施例中称为pFrame窗口创建函数,另一种用于创建以Widget控件为载体的新窗口,本发明实施例中称为pWidget窗口创建函数。在调用过程中,具体调用什么类型的窗口创建函数,可以根据用于打开新窗口的代码中携带的窗口创建函数标识和/或窗口配置参数决定。\n[0071] 如表1所示,窗口操作函数除包括窗口创建函数外,还可以进一步包括:删除窗口函数,隐藏窗口函数,开始拖动窗口函数,拖动窗口函数,停止拖动窗口函数,提高窗口的zIndex函数和/或最小化窗口函数。相应的,删除窗口函数也可以包括删除pFrame窗口函数和删除pWidget窗口函数。\n[0072] 终端将窗口操作函数加载到主窗口之后,还可以进一步在主窗口中创建窗口数组,包括创建pFrame窗口数组和pWidget窗口数组,pFrame窗口数组用于存储以Frame控件为载体的窗口,pWidget窗口数组用于存储以Widget控件为载体的窗口。\n[0073] 其中,如果需要打开的新窗口为以Frame控件为载体的窗口,则用于打开新窗口的代码中包括pFrame窗口创建函数的标识和新窗口的窗口配置信息,且新窗口的窗口配置信息可以包括URL,新窗口的标识,zIndex、窗体可见值、宽度和高度以及新窗口在顶层窗口的位置坐标。\n[0074] 其中,如果需要打开的新窗口为以Widget控件为载体的窗口,则用于打开新窗口的代码中包括pWidget窗口创建函数的标识和新窗口的窗口配置信息,且新窗口的窗口配置信息包括新窗口的标识,标题,RGBA格式、宽度和高度,新窗口在主窗口的位置坐标以及新窗口的窗口内容。\n[0075] 步骤203:终端在加载主窗口的过程中,若解析到用于打开新窗口的代码则从用于打开新窗口的代码中提取窗口创建函数的标识和窗口配置信息;\n[0076] 其中,窗口创建函数的标识可以是pFrame窗口创建函数的标识,也可以是pWidget窗口创建函数的标识。pFrame窗口创建函数用于创建以Frame控件为载体窗口,该类型的窗口在打开时需要到对应的URL去下载窗口内容;pWidget窗口创建函数用于创建以Widget控件为载体窗口,该类型的窗口的窗口内容直接写在代码中,在打开时可以直接将窗口内容加载到新窗口中,不需要根据URL去下载。\n[0077] 如果用于打开新窗口的代码中包含的是pFrame窗口创建函数的标识,则新窗口的窗口配置信息包括URL,新窗口的标识,zIndex、窗体可见值、宽度和高度以及新窗口在顶层窗口的位置坐标。\n[0078] 如果用于打开新窗口的代码中包含的是pWidget窗口创建函数的标识,则新窗口的窗口配置信息包括新窗口的标识,标题,RGBA格式、宽度和高度,新窗口在主窗口的位置坐标以及新窗口的窗口内容。\n[0079] 步骤204:终端根据提取的窗口创建函数的标识从已加载到主窗口的窗口操作函数中调用对应的窗口创建函数;\n[0080] 具体地,如果提取的窗口创建函数的标识为pFrame创建函数的标识,则从主窗口的窗口操作函数中调用pFrame窗口创建函数;如果提取的窗口创建函数的标识为pWidget创建函数的标识,则从主窗口的窗口操作函数中调用pWidget窗口创建函数。\n[0081] 步骤205:终端通过主窗口的进程运行调用的窗口创建函数,并根据提取的窗口配置信息在主窗口中打开新窗口,并将打开的新窗口插入到主窗口的窗口数组中。\n[0082] 具体的,终端在运行窗口创建函数时,将窗口配置信息作为输入参数,如,运行pFrame窗口创建函数时,则按照窗口配置信息中的新窗口的标识,zIndex、窗体可见值、宽度和高度以及新窗口在主窗口的位置坐标创建新窗口的窗体,创建新窗口的窗体,并根据窗口配置信息中的URL从网络中下载新窗口的内容,在新窗口的窗体中渲染下载的内容,再将新窗口插入到主窗口的pFrame窗口数组中;运行pWidget窗口创建函数时,则按照窗口配置信息中的新窗口的标识、标题、RGBA格式、宽度和高度,新窗口在主窗口的位置坐标创建新窗口的窗体,并将窗口配置信息中的窗口内容加载到新窗口的窗体中,再将新窗口插入到主窗口的pWidget窗口数组中。\n[0083] 其中,步骤203-205可执行多次,比如主窗口的代码中需要打开多个新窗口时,终端每解析到一段用于打开新窗口的代码,就执行一次。\n[0084] 上述实施例是以主窗口自动打开新窗口的场景为例进行说明的,在实际应用中,还可以由用户在主窗口中提交用于打开新窗口的请求,终端根据该请求来打开新窗口,在此场景下,终端可以根据用户的请求获取用于打开新窗口的代码,具体的,可以根据请求中携带的信息从主窗口中去获取(例如,假设主窗口中存在一个用于打开新窗口的按钮,且该按钮对应用于打开新窗口的代码,用户可以通过点击该按钮向浏览器提交用于打开新窗口的请求;终端接收该请求,根据该请求中携带的按钮信息,获取该按钮对应的用于打开新窗口的代码),也可以在用户发起的请求中携带(例如,用户在点击按钮时,自动获取对应的代码添加到请求中)。终端获取到打开新窗口的代码之后的处理与上述实施例类似,这里不再赘述。\n[0085] 在本发明实施例中,如果终端解析到主窗口对应的文本文件中用于打开新窗口的代码或接收到用户在主窗口中提交打开新窗口的请求时,则终端利用主窗口进程来打开新窗口,如此在打开的新窗口时,不需要创建新的进程,所以创建的进程数目不会随着需要打开的新窗口的数目呈线性增长,节省大量的系统资源。\n[0086] 进一步的,用户可以对打开的窗口进行操作,并通过终端提供的中间件子系统向终端的浏览器提交对窗口进行操作的各种事件。\n[0087] 具体的,终端中的浏览器通过中间件子系统接收用户提交的事件,获取焦点所在的窗口的标识,根据获取的窗口的标识从主窗口的窗口数组中获取对应的窗口,将该事件提交给获取的窗口,由获取的窗口对该事件进行处理。\n[0088] 需要说明的是,图2中各步骤的具体实现方式均可应用在图1所示的实施例中。\n[0089] 如图3所示,本发明的实施例提供一种多窗口的实现装置,用于实现本发明的上述方法,所述装置包括:\n[0090] 加载模块301,用于加载主窗口,并在加载时将窗口操作函数加载到主窗口中;\n[0091] 调用模块302,用于当需要打开新窗口时,从主窗口中调用窗口操作函数中的窗口创建函数;\n[0092] 打开模块303,于通过窗口创建函数在主窗口的进程中打开新窗口。\n[0093] 具体的,调用模块302可以根据加载模块301在加载主窗口时,解析到的用于打开新窗口的代码,确定需要打开新窗口;或,在加载模块301在加载主窗口后,根据接收到的用户在主窗口中提交的用于打开新窗口的请求,确定需要打开新窗口,并根据该请求获取用于打开新窗口的代码。\n[0094] 其中,调用模块302,具体用于在确定当需要打开新窗口时,从用于打开新窗口的代码中提取窗口创建函数的标识,从主窗口中调用窗口创建函数的标识对应的窗口创建函数。\n[0095] 打开模块303具体用于通过主窗口的进程运行窗口创建函数,并获取新窗口的窗口配置信息;根据新窗口的窗口配置信息,生成新窗口;将新窗口插入到主窗口的窗口数组中。\n[0096] 其中,如果需创建的新窗口是以Frame控件为载体的窗口,则新窗口的窗口配置信息,包括URL、新窗口的标识、宽度、高度、zIndex、窗体可见值以及新窗口在主窗口中的位置坐标;打开模块303在生成新窗口时,具体用于\n[0097] 根据新窗口的标识、宽度、高度、zIndex、窗体可见值以及新窗口在主窗口的位置坐标,创建新窗口的窗体;\n[0098] 并根据该URL下载新窗口的内容,在新窗口的窗体中渲染下载的内容。\n[0099] 如果需创建的新窗口是以Widget控件为载体的窗口,则新窗口的窗口配置信息,包括新窗口的标识、标题、宽度、高度、窗口内容、RGBA格式以及新窗口在主窗口的位置坐标;打开模块303在生成新窗口时,具体用于\n[0100] 根据新窗口的标识、标题、宽度、高度、RGBA格式以及新窗口在主窗口的位置坐标,创建新窗口的窗体;\n[0101] 并向新窗口的窗体中加载新窗口的窗口内容。\n[0102] 进一步地,该装置还可以包括:\n[0103] 处理模块,用于接收用户提交的事件,获取焦点所在的窗口的标识,根据获取的窗口的标识从主窗口的窗口数组中获取对应的窗口,将接收的事件提交给获取的窗口,由获取的窗口对接收事件进行处理。\n[0104] 需要说明的是,本发明实施例提供的多窗口的实现装置可以包括处理器、存储器、显示器等部件,其中,上述各模块可以由处理器来运行,而自定义的窗口操作函数可以预先存储在存储器中,各窗口(包括主窗口、新窗口)通过显示器显示给用户。上述各模块的具体实现可以参照图2所述实施例中的实现方式来实现。\n[0105] 在本发明实施例中,终端通过在加载主窗口时将窗口操作函数加载到主窗口中,当需要打开新窗口时,从主窗口中调用窗口操作函数中的窗口创建函数,通过调用的窗口创建函数在主窗口的进程中打开新窗口,如此可以通过一个主窗口进程来打开需要打开的各新窗口,从而不需要创建新的进程,所以创建的进程数目不会随着需要打开的新窗口的数目呈线性增长,节省大量的系统资源。\n[0106] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。\n[0107] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2020-02-25
专利权的转移
登记生效日: 2020.02.06
专利权人由华为软件技术有限公司变更为华为技术有限公司
地址由210012 江苏省南京市雨花台区软件大道101号华为南京基地变更为518129 广东省深圳市龙岗区坂田华为总部办公楼
- 2016-12-07
- 2013-10-09
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201110365851.2
申请日: 2011.11.17
- 2013-05-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-12-23
|
2009-07-02
| | |
2
| |
2004-01-07
|
2002-07-02
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |