事件响应方法和装置的制造方法

文档序号:8487581阅读:382来源:国知局
事件响应方法和装置的制造方法
【技术领域】
[0001]本发明涉及移动终端领域,特别涉及一种事件响应方法和装置。
【背景技术】
[0002]安装于手机、平板电脑之类的电子设备中的浏览器通常在多线程环境下运行。在浏览器启动时,系统首先创建Π (User Interface,用户界面)线程,Π线程主要负责接收用户的操作事件、页面绘制以及将页面内容上屏显示等任务。在浏览器启动之后,系统还会创建内核线程,内核线程主要负责完成页面内容的解析、排版以及JavaScript脚本文件的执行等任务。
[0003]以浏览器对触摸事件的响应为例,当用户在使用电子设备中安装的浏览器浏览网页时,触摸当前页面中某个位置产生触发信号。电子设备接收到该触发信号之后,系统根据该触发信号将触摸事件转换为事件对象,并将该事件对象传递给浏览器。此时,Π线程获取该事件对象并将该事件对象传递给内核线程,内核线程判断其是否需要处理该事件对象。若判断结果为内核线程需要处理该事件对象,则内核线程处理该事件对象并在处理完成之后做出响应;若判断结果为内核线程不需要处理该事件对象,则内核线程将该事件对象返回给Π线程,由Π线程对该事件对象做出响应。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:对于不需要内核线程做出响应的事件对象,由于该事件对象需要经过Π线程与内核线程之间的来回传递以及内核线程的判断,此过程会产生一定的耗时;进一步地,当内核线程处理的事件对象较多时,由于内核线程无法对该事件对象及时做出判断,导致该事件对象重新回到UI线程的耗时会更大,最终导致浏览器对用户操作响应缓慢。因此,现有的浏览器中的事件响应机制存在耗时严重以及响应缓慢的问题。

【发明内容】

[0005]为了解决现有的浏览器中的事件响应机制存在耗时严重以及响应缓慢的问题,本发明实施例提供了一种事件响应方法和装置。所述技术方案如下:
[0006]第一方面,提供了一种事件响应方法,用于在多线程环境下运行的浏览器中,所述方法包括:
[0007]通过UI线程获取用户操作所对应的事件对象;
[0008]通过所述UI线程检测是否需要将所述事件对象传递给内核线程;
[0009]若检测结果为不需要将所述事件对象传递给所述内核线程,则通过所述Π线程对所述事件对象进行响应。
[0010]第二方面,提供了一种事件响应装置,用于在多线程环境下运行的浏览器中,所述装置包括:
[0011]事件获取模块,用于通过Π线程获取用户操作所对应的事件对象;
[0012]事件检测模块,用于通过所述Π线程检测是否需要将所述事件对象传递给内核线程;
[0013]事件响应模块,用于若检测结果为不需要将所述事件对象传递给所述内核线程,则通过所述Π线程对所述事件对象进行响应。
[0014]本发明实施例提供的技术方案带来的有益效果是:
[0015]通过Π线程获取用户操作所对应的事件对象,并通过Π线程检测是否需要将事件对象传递给内核线程,若检测结果为不需要将事件对象传递给内核线程,则通过Π线程对事件对象进行响应;解决了现有的浏览器中的事件响应机制存在耗时严重以及响应缓慢的问题;实现了由UI线程在获取用户操作所对应的事件对象之后,直接由Π线程检测是否需要将事件对象传递给内核线程,省去了现有技术中将每个事件对象都传递给内核线程进行判断的耗时,大大提高了浏览器对用户操作的响应效率。
【附图说明】
[0016]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]图1是本发明一个实施例提供的事件响应方法的方法流程图;
[0018]图2是本发明另一实施例提供的事件响应方法的方法流程图;
[0019]图3是本发明一个实施例提供的事件响应装置的结构方框图;
[0020]图4是本发明另一实施例提供的事件响应装置的结构方框图。
【具体实施方式】
[0021]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0022]请参考图1,其示出了本发明一个实施例提供的事件响应方法的方法流程图,本实施例以该事件响应方法应用于在多线程环境下运行的浏览器中来举例说明。该事件响应方法可以包括如下几个步骤:
[0023]步骤102,通过UI线程获取用户操作所对应的事件对象。
[0024]步骤104,通过UI线程检测是否需要将事件对象传递给内核线程。
[0025]步骤106,若检测结果为不需要将事件对象传递给内核线程,则通过Π线程对事件对象进行响应。
[0026]综上所述,本实施例提供的事件响应方法,通过Π线程获取用户操作所对应的事件对象,并通过UI线程检测是否需要将事件对象传递给内核线程,若检测结果为不需要将事件对象传递给内核线程,则通过UI线程对事件对象进行响应;解决了现有的浏览器中的事件响应机制存在耗时严重以及响应缓慢的问题;实现了由Π线程在获取用户操作所对应的事件对象之后,直接由UI线程检测是否需要将事件对象传递给内核线程,省去了现有技术中将每个事件对象都传递给内核线程进行判断的耗时,大大提高了浏览器对用户操作的响应效率。
[0027]在实现本发明的过程中,发明人还发现,网页页面也称为HTML (Hyper TextMarkup Language,超文本标记语言)文档。浏览器在打开网页页面时,即为读取HTML文档,并以网页的形式显示HTML文档中包含的内容。而HTML DOM (HTML Document ObjectModel,适用于HTML的文档对象模型)定义了访问和操作HTML文档的标准方法。HTML DOM将HTML文档表达为树结构,整个HTML文档可以视为一个包含有若干个D0M(Document ObjectModel,文档对象模型)节点的节点树。每个DOM节点对应于一个HTML元素,DOM节点通常也作为HTML元素的外部接口供JavaScript脚本进行调用。
[0028]对于一个网页页面中包含的所有DOM节点,通常情况下有一部分DOM节点有注册JavaScript事件监听器,而另一部分DOM节点并没有注册JavaScript事件监听器。对于没有注册JavaScript事件监听器的DOM节点,当接收到对应于该DOM节点的用户操作所产生的事件对象时,内核线程不会对该事件对象做出任何响应。然而,由于【背景技术】中并没有实现一套机制可以由Π线程判断用户操作所对应的DOM节点是否有注册JavaScript事件监听器,所以每个事件对象都必须传递给内核线程进行判断。有鉴于此,本发明实施例提供了一套机制,实现了由UI线程判断用户操作所对应的DOM节点是否有注册JavaScript事件监听器,当判断发现并没有注册JavaScript事件监听器时,Π线程直接对用户操作所产生的事件对象进行响应,省去了【背景技术】中将每个事件对象都传递给内核线程进行判断的耗时,大大提高了浏览器对用户操作的响应效率。下面将结合本发明另一具体实施例对本发明实施例提供的这套事件响应机制进行详细介绍和说明。
[0029]请参考图2,其示出了本发明另一实施例提供的事件响应方法的方法流程图,本实施例以该事件响应方法应用于在多线程环境下运行的浏览器中来举例说明。该事件响应方法可以包括如下几个步骤:
[0030]步骤201,通过内核线程构建预定区域数组对象,该预定区域数组对象中包含有注册了 JavaScript事件监听器的DOM节点所对应的显示区域。
[0031]当用户每次使用浏览器打开一个新的网页页面或者网页页面中有内容发生改变时,内核线程都会接收到系统发送的页面绘制请求。内核线程接收到页面绘制请求后,从服务器中下载网页资源(通常为HTML文档),并对网页资源进行解析以构建DOM树;然后内核线程对DOM树进行排版生成渲染树,也即按照正确的顺序将各个DOM节点所对应的显示区域进行排列;之后,交由Π线程完成页面内容的绘制,并将各个DOM节点所对应的显示区域上屏显示。
[0032]在本实施例提供的事件响应方法中,当内核线程接收到页面绘制请求时,内核线程还需完成预定区域数组对象的构建,并在后续步骤中完成预定区域数组对象中所包含的内容的采集。预定区域数组对象中包含有注册了 JavaScript事件监听器的DOM节点所对应的显示区域,下述步骤2
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1