android 浏览器 app层,framework层,webkit层消息的交互
来源:互联网 发布:mac uefi 编辑:程序博客网 时间:2024/06/05 04:42
在android(4.0以上)平台基于webkit的原生浏览器中,通常app上层负责与用户交互的界面,例如点击页面中,识别不同种类的点击内容从而显示不同的上下文菜单。中间层通常是framework层(framework/base),这一层的主要职责是,将app层获得的用户请求,如点击链接,点击保存图片之类,转发往下层去;将下层处理好的内容,或者通过消息,或者通过中间代理类,来分发至上层,对用户展现出来。至于底层(external/webkit),不用说,自然是真正干活的部分。这里不会涉及技术上的细节,只是将上层往下层传递消息请求,下层执行完反馈给上层的大体路径给出说明,能力有限,肯定不是很全。
路线1:
app层部分:在浏览器长按点击事件-------->Controller(对点击的内容进行识别,图片,链接,或是其他类型),形成不同的菜单(如链接的话有打开链接的菜单项,图片则有保存图片,另存为等图片类型的菜单)-------->直接调webviewclassic对象------------>进入Framework层:在framework的webviewclassic函数中,打包成某个消息;将该消息向webviewCore发送出去------------------>webviewCore接收消息。该类中定义了一些能够与底层交互的函数,这些函数的特征是通常以native前缀开头,在消息处理部分中,可以直接用这些与底层对应的函数来获得底层功能。
路线1指示了从上层到下层一层层的调用关系。某些过程是用消息来联通的,这就决定了,我们不可能直接将底层处理过后的消息或者其他内容直接通过函数调用来返回给最上层,即该路线是单向的。
路线2: A: 从底层cpp函数中--------》调用framework层:Browserframe,在里面通过对象函数调用CallBackProxy---------> CallBackProxy中会调用webviewclient类(该类是个接口类)对象。注意这是个很神奇的对象,他可以被上层的一些类如Tab类继承实现,而这些类恰好大都是展示底层功能的上层类。于是乎我们只要在这些上层类中增加实现webviewclient类的成员函数的具体功能,这样在CallBackProxy调用webviewclient类的时候,自动调用我们实现的方法。
路线3:在framewrok层的webviecore和webviewclassic,都有定义的callbackProxy的对象。于是,对于那种在weviewcore.java中直接调用底层webviewcore.cpp并返回需要的参数的情况 ,可以从路线2中直接截断到CallbackProxy调用webviewclient类的过程。
总之,一句话,在底层像上层返回消息的过程中,很难绕开(可能有其他的方法,我也不太肯定)webviewclient这个中间接口类,我们所要做的就是webviewclient添加成员函数,并在上层的某个他的子类中去实现。
- android 浏览器 app层,framework层,webkit层消息的交互
- Android 上调试 webkit framework 层及jni层
- Android Camera从App层到framework层到HAL层的初始化过程
- [Android Webkit]JNI基础及Java层与C++层的交互
- WebKit之FrameWork层介绍
- Webkit之App层的分析
- Android Framework层如何截获按键消息
- Android Framework层的理解
- android浏览器研究-APP层UI布局
- android浏览器研究-APP层基本架构
- android电池 framework层
- android framework层
- android电池 framework层
- FrameWork层的浅析
- 修改android的framework层操作小记
- Android平台framework层的开发
- 修改Android的Framework层操作小记
- Android中Notification的framework层讲解
- hdu 2045 不容易系列之(3)—— LELE的RPG难题
- axis2-发布服务的操作
- 矩阵转址的一般算法
- java json对象转换数组
- hdu4520(小Q系列故事——最佳裁判)
- android 浏览器 app层,framework层,webkit层消息的交互
- Example
- hive大数据倾斜总结
- Ajax工作原理
- Linux System Call Table
- linux下 yum 安装mysql和卸载
- 中文乱码问题
- 内存对齐
- 第四次课后作业