最近公司的项目在做H5测试,自己只是写业务逻辑的android小白,听着大家在说什么webview、webkit....,云里雾里。所以就抽出下班后的一点时间来了解一下相关的概念和知识点,然后记录总结。
1、为什么Android App 可以显示web页面?
作为Android开发者,应该都知道在手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件。目前很多Android App 都内置了可以显示web页面的界面,会发现这个界面一般是由WebView的组件渲染出来的。 WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,它使用了WebKit渲染引擎加载显示网页。
WebView的优点:
(1)可以直接显示和渲染web页面,直接显示页面
(2)WebView可以直接用html文件作布局
(3)和JavaScript交互调用
在activity中即可获得WebView的引用,同时load一个网址:
webview = (WebView) findViewById(R.id.webView1);webview.loadUrl("http://www.baidu.com/");//webview.reload();// reload page
页面中的链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 WebView的WebViewClient对象.
mWebView.setWebViewClient(new WebViewClient(){public boolean shouldOverrideUrlLoading(WebView view, String url){ view.loadUrl(url);return true;}});
2、Webkit简介
Webkit是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的Safari, Google的Chrome, Nokia S60平台的默认浏览器,Apple手机的默认浏览器,Android手机的默认浏览器均采用的Webkit作为浏览器内核。Webkit理所当然的成为了当今主流的三大浏览器内核之一。另外两个分别是Gecko和Trident,大名鼎鼎的Firefox便是使用的Gecko 内核,而微软的IE系列则使用的是Trident内核。虽然目前市场上IE内核浏览器仍然占据大多数市场份额,但其他内核浏览器也大有后来居上之势。其中,Webkit作为一款优秀的浏览器内核,它众多优秀的特性引起业内的的广泛关注。尤其是近来,google的加入更是让Webkit有所升温,从 Goole Chrome浏览器, Google Android手机操作系统内置浏览器均采用Webkit作为内核,近来推出的Chrome OS更是让人期待。
Webkit组成

从代码结构上看WebKit包含三大部分


WebCore是Webkit的核心部分,它实现了对文档的模型化,包括了CSS, DOM, Render等的实现, JavaSript Core显然是对JavaSript支持的实现。而橘黄色标注的Webkit部分包含了很多不同平台对Webkit封装的实现,即抽象出了与浏览器所能直 接对应的一些概念的实现,如,WebView,WebPage, WebFrame等。这三部分共同构成了Webkit, 在源码中,它们分别对应这个这三个目录, 即Webkit三大部分为WebCore, JavaSript Core,Webkit。
应用程序如何利用Webkit:
利用Webkit的应用程序的位置处于Webkit模块之上,应用程序并不直接和WebCore以及JavaScript Core来打交道,而是同Webkit模块来交互,从而屏蔽了WebCore和JavaSript Core部分。Webkit模块实际上抽象出了大多数应用程序所需要的那一部分,这里所说的大多数应用程序其实就是指的浏览器, 对于实现一个浏览器而言,Webkit模块所提供的接口已经足够。不过对于某些应用,可能得对其实施一定的改造,但Webkit本来就是被设计成为Browser的内核而被实现的。很多平台都提供了Browser组件,其使用方法就像是其他可视组件一样,在应用程序中应用起来非常方便。比如,提供的叫做WebView的可视化组件


未完待续~

参考博客:
http://www.cnblogs.com/jyli/archive/2010/01/31/1660355.html

更多相关文章

  1. Android(安卓)应用程序窗体显示状态操作(requestWindowFeature()
  2. 关于 Chrome for Android(安卓)你必须知道的 N 件事儿
  3. 什么是ANR,如何避免?
  4. 收藏老罗的----------Android应用程序组件Content Provider简要
  5. Android应用程序目录定义及使用方法
  6. Android常用适配器分析(如何制作简易Launcher)
  7. Android通信方式篇(四)-Binder机制(开篇)
  8. 实现android JNI 直接调用android驱动程序
  9. android学习日记13--数据存储之ContentProvide

随机推荐

  1. 如何解决:Android中 Error generating fin
  2. Android_RecyclerView&SwipeRefreshLayou
  3. Android(安卓)自定义 ExpandableListView
  4. android Spinner控件的使用
  5. C++项目RapidJson的详细用法总结
  6. 初学Android的几个常见问题
  7. (转 Android(安卓)UI学习 - Menu)
  8. Android(安卓)系统各种音量的获取及音量
  9. android 实现服务器连接获取数据和传递数
  10. Android(安卓)Audio代码分析10 - audio_t