Android网络开发之WebKet引擎基础
Android浏览器的内核是Webkit引擎,WebKit的前身是KDE小组的KHTML。
Apple公司推出的Safari浏览器,使用的内核是装备了KHTML的WebKit引擎。
WebKit内核在手机上应用十分广泛。
WebKit 是一个开源浏览器网页排版引擎,类似的引擎有:
Gecko作为Mozilla, Firefox的内核,
Trident作为IE的内核(也称MSHTML)。
WebKit所包含的WebCore排版引擎和JSCore排版引擎来自于KDE的KHTML和KJS。
Apple公司选择WebKit作为内核是因为它拥有清晰的源码结构、极快的渲染速度。
WebKit由3个模块组成:JavaScriptCore, WebCore, WebKit。
1. JavaScriptCore: JavaScript解释器。
2. WebCore: 项目的核心,用来实现Render引擎。解析Web页面,生成一个DOM树和一个Render树。
3. WebKit: 整个项目的名称。
WebCore的主要功能有:
1. Page, 与外框相关的内容,包括Frame, Page, History, Focus, Window.
2. Loader, 加载资源及Cache。
3. HTML, DOM HTML 内容及解析。
4. XML, XML内容及解析。
5. DOM, DOM CORE 内容。
6. Render, 排版功能。
7. CSS, DOM CSS 内容。
8. Binding, DOM和JavaScriptCore绑定的功能。
9. Editing, 所有与编辑相关的内容。
JavaScriptCore的主要功能有:
1. API, 基本JavaScript功能。
2. Binding, 与其他功能的绑定,如DOM, C, JNI。
3. DerviedSource, 自动产生的代码。
4. ForwordHeads, 头文件,无实际意义。
5. PCRE, Perl-Compatible Regular Expressions.
6. KJS, JavaScript内核。
7. WTF, KDE的C++模型库。
WebKit的解析过程
1. CURL得到Stream。
2. 解析拆分字符串。
3. 通过DOM Buider按合法的HTML规范生成DOM树。
4. 如果有JavaScript, JSEngine就通过ECMA-262标准完善DOM树。
5. 把DOM传给LayoutEngine进行布局,如果有CSS样式,就通过CSSParser解析。
6. 最后Rendering渲染出来。
Google对WebKet进行了封装,为开发者提供了丰富的API,其中最重要的是android.webkit.WebKit控件。
Android网络开发之WebKet引擎基础的更多相关文章
- Android 网络开发之WIFI
WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...
- Android网络开发之用tcpdump抓包
Android开发过程中,当涉及到网络通信的时候,有一些字段须要抓包获取.我之前由于SSDP设备发现的包头格式没有写对,经过抓包分析和标准包头对照发现了这个困扰我非常久的问题.总之,掌握在Androi ...
- Android网络开发之OkHttp--基本用法POST
1.OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar 2.通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程.主要分为五步: (1).声明并实例化一个OkHttp ...
- Android网络开发之OkHttp--基本用法GET
1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...
- Android网络开发之Volley--Volley自定义Request
1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...
- Android网络开发之Volley--Volley基本用法ImageRequest(三)
1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...
- Android网络开发之Volley--Volley基本用法JsonObjectReques(二)
1.JsonObjectRequest用法 用法和StringRequest基本相同,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置JsonObjectRequest对象 ...
- Android网络开发之Volley--Volley基本用法StringRequest(一)
1.StringRequest用法 主要分为3步: (1).实例化一个RequestQueue对象 (2).设置StringRequest对象参数,并将StringRequest对象加入Request ...
- Android网络开发之WIFI
WIFI全称Wireless Fidelity, 又称802.11b标准.WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance( ...
随机推荐
- javax.mail 遇到501 mail from address must be same as authorization user 的問題
使用不同的兩個帳戶发送email时,第一个账户可以发送成功,但到第二个账户的时候就报出了501 mail from address must be same as authorization user ...
- eclipse 开发web程序,启动tomcat插件服务器的时候。部署目录在那里?
不在tomcat-home/webapps/下面, 你做一个文件上传功能看看就知道了,临时目录一般是你的工作区间workspace\.metadata\.plugins\org.eclipse.wst ...
- post文件的html
<HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio& ...
- 【BZOJ】【2730】【HNOI2012】矿场搭建
Tarjan求BCC/割点 然而似乎我一开始抄的白书的板子哪里抄错了?还是本身哪里不对……(可能是不适用于这道题?因为这题要求求出每个BCC的大小..? 膜拜了ydc的写法= = 其实两次dfs也并没 ...
- 我也用github(2)——关联本地工程到github仓库
github只是为我们提供了一个存储的功能,我们也可以准备一个服务器(当然,能联网是前提了),将版本库保存到服务器上. 本文以github为例进行实验. 1. 在github上创建一个仓库 这个非常简 ...
- 【Cocos2d-X开发学习笔记】第12期:动作类CCAction的详细讲解
一般对于游戏中的精灵而言,它们不仅仅是存在于场景中,而且是动态展现的,例如,精灵移动的动态效果.动 画效果.跳动效果.闪烁和旋转动态效果等.每一种效果都可以看成是精灵的一个动作. 一.动作类(CCAc ...
- asp.net中使用ueditor 1.3.6上传图片问题
在asp.net中使用ueditor 1.3.6版本上传图片时,出现上传成功但是,图片无法正常显示的问题,解决方法如下: 只需要将imageUp.ashx中的info = up.upFile(cont ...
- linux CentOS7 安装scala
1.打开terminal ,进入当前用户路径: cd /home/sks 2.下载Scala2.11 wget https://downloads.lightbend.com/scala/2.11.8 ...
- Android -- Gradle
使用gradle的目的 更容易重用资源和代码: 可以更容易创建不同的版本的程序,多个类型的apk包: 更容易配置,扩展; 更好的IDE集成; Gradle基本结构 使用ide创建的gradle构建的项 ...
- 给 TextBlock 加 ToolTip
<TextBlock ToolTip="{Binding RelativeSource={RelativeSource Self},Path=Text}" Text=&quo ...