android 4.0.1 webkit Event 事件处理过程分析_android webkit java 键值-程序员宅基地

技术标签: WebKit  浏览器  android学习  android  

键值经由android的GUI事件机制传给了WebView.java
webview.java的onKeyDown()中会对感兴趣的键值作处理,这些键值可能不会再被传给webkit(其实就是WebViewClient.java中的shouldOverrideKeyEvent方法)。
webview.java的onKeyDown中通过调用mWebViewCore.sendMessage()将需要webkit处理的键值通过webviewcore.java传给webkit.
webviewcore.java的sendMessage进一步将这个event传给它自身的EventHub中进行处理。
EventHub封装了Handler,消息在EventHub的transferMessages()中处理。
对于KEY_DOWN事件会调用webviewcore.java的key()函数处理。

最终通过jni调到webviewcore.cpp的key()函数,这个函数将键值交给EventHandler来处理。这样事件就传到了webkit 内核。

webkit 不做处理的键值在WebViewCore.java的key()函数中会通过webview.java的消息机制再传回给WebView.java做处理。

webkit内核对键值的处理的顺序图如下。

上述过程完成后JSEventListener.cpp会接着调用JSC::call(),这个全局函数会调用Interpreter::executeCall()执行页面上注册的键值处理函数(即页面上注册的onkeydown,onkeypress等)。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Cwuhao/article/details/9232161

智能推荐

MATLAB绘图总结-程序员宅基地

文章浏览阅读6.2k次,点赞36次,收藏175次。目录一些常用的MATLAB绘图方法二维图像绘制三维作图提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档一些常用的MATLAB绘图方法总结一下一些常用的MATLAB的绘图函数和参数设置,增强结果的可视化程度。二维图像绘制二维图像是在不同的平面坐标上将数据点连接起来的平面图像。常用的平面坐标有,直角坐标、极坐标、对数坐标等,MATLAB有很多常用的指令来绘制不同的二维图像。plot和fplotMATLAB中最常用的两个二维函数绘制函数plot()和fplot()pl_matlab绘图总结

Golang安装指南:一步步带你轻松搭建Go开发环境-程序员宅基地

文章浏览阅读977次。golang的在windows和linux操作系统安装,vscode和goland工具的安装和配置_golang安装

MySQL慢查询分析-程序员宅基地

文章浏览阅读62次。为什么80%的码农都做不了架构师?>>> ...

Java cas 实例 客户端配置_java集成cas的客户端代码-程序员宅基地

文章浏览阅读2.2k次。第二步 客户端web应用程序集成CAS1. 从官网下载CAS Client, 将客户端的jar, cas-client-core-3.2.1.jar commons-logging-1.1.jar 引入到web应用程序的classpath中2 .配置web.xml文件, 主要是添加过滤器拦截通信, 下面的实例代码, 假设web应用程序的端口是8888 _java集成cas的客户端代码

celery-redis 的测试demo_redis的测试demo-程序员宅基地

文章浏览阅读1.1k次。celery 安装sudo pip3 install celeryredis安装sudo apt install redis-serverredis 启动redis-server测试redis是否启动user@host: ~$ redis-cli127.0.0.1:6379> pingPONG如图创建 celery_app_1.p..._redis的测试demo

随便推点

右键菜单,各种内容一键完成,注册表的使用_allfilesystemobjects-程序员宅基地

文章浏览阅读394次。各种内容一键完成,注册表的使用前言过程一,如果是想右键文件夹的时候出现在菜单中,需要在AllFilesystemObjects的shell文件夹中右键添加项二,如果是想在右键空白的地方打开的菜单中添加前言之前在使用bandzip的时候,因为电脑装了俩系统,而且经过更新换代,bandzip的在文件夹下打包不好用了,便想着自己右键添加一下。于是发现了注册表这个好东西。在使用npm的时候经常用到cmd,需要cd到文件夹下运行npm run dev。用到注册表添加完右键菜单就方便很多了过程先在搜索框找到注_allfilesystemobjects

ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memor_error:unexpected bus error encountered in worker .-程序员宅基地

文章浏览阅读714次。ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).需要把dataloader里面的num_works设置成1_error:unexpected bus error encountered in worker . this might be caused by i

鸿蒙os2.0公测结束了,鸿蒙OS2.0开启第二期公测 新增7款机型-程序员宅基地

文章浏览阅读136次。5月10日 消息:昨日,华为官方正式开启了HarmonyOS2.0开发者Beta公测招募第二期,报名时间为2021-05-0915:00:00-2021-05-1711:59:59。在本次的测试版公测中,华为新增了nova6、nova65G 、nova75G、nova7Pro5G、nova8、nova8Pro、MatePad10.8英寸等机型。同时,新增并增强了16000+个APIs、分布式应..._鸿蒙2.0公测到期后

adam算法效果差原因_深度学习优化器-Adam两宗罪-程序员宅基地

文章浏览阅读2.1k次。在上篇文章中,我们用一个框架来回顾了主流的深度学习优化算法。可以看到,一代又一代的研究者们为了我们能炼(xun)好(hao)金(mo)丹(xing)可谓是煞费苦心。从理论上看,一代更比一代完善,Adam/Nadam已经登峰造极了,为什么大家还是不忘初心SGD呢?举个栗子。很多年以前,摄影离普罗大众非常遥远。十年前,傻瓜相机开始风靡,游客几乎人手一个。智能手机出现以后,摄影更是走进千家万户,手机随手..._adam不收敛

报错ERROR [org.springframework.web.context.ContextLoader] - Context。。。_error org.springframework.web.context.contextloade-程序员宅基地

文章浏览阅读3k次。我使用的是idea开发工具,做的是SSM框架如何犯错:删除了target下classes下的mapper文件犯错原因:tomcat服务器的内存溢出解决:重新设置tomcat的内存参数当然设置的参数根据你的项目状况和电脑的配置来决定咯,楼主路口因为要同时启动两个项目所以配置的比较大是:-Xmx1024m -enableassertions -server -XX:MaxPermS..._error org.springframework.web.context.contextloader (contextloader.java:351)

详解神经网络(Neural Network)-程序员宅基地

文章浏览阅读2.1k次。读《Python神经网络编程》总结一些归纳计算机编程语言可以理解矩阵计算,并认识到潜在的计算方法的相似性,这允许计算机高速高效地进行这些计算,算出X = W • I ,而无需我们对每一层的每个节点给出单独的计算指令。为什么让误差反向传播到网络的每一层呢?原因是,我们使用误差来指导如何调整链接权重,从而改进神经网络输出的总体答案。为了避免终止于错误的山谷或错误的函数最小值,我们从山上的不同...