Android WebView 开发具体解释(三)

转载请注明出处   http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao

概览

Android WebView提供展示网页,也提供我们应用程序对网页载入的一些定制,比方我们为了降低网络数据能够设置当前载入的页面不能显示图片,假设是pc网址在pad上訪问我们能够提供用户一种概览模式的浏览方式,能够提供放大网页字体等定制功能。

Android 提供管理WebView的一些setting的类WebSettings。在WebView对象被创建时WebSettings对象也会被同一时候创建,并附有默认的settings值. WebSettings对象能够通过WebView.getSettings()获得。

WebSettings的生命周期同WebView生命周期同样,假设WebView被destroy 则WebSettings应该被释放,否则假设使用WebSettings继续再操作的话, 会抛出异常IllegalStateException。

1.WebSettings API具体解释

调用WebSettings设置的全部函数是异步制定的。因此我们设置某个状态并不能立即生效。

public synchronized void setLoadsImagesAutomatically(boolean flag)

设置当前webview是否须要载入图片,这个标记控制整个webview的状态,而且对全部的资源都採取这样的策略。假设设置为false 那么訪问的当前网址中的所以图片资源将不会被载入。默认值是true。

public synchronized void setBlockNetworkImage (boolean flag)

当getLoadsImagesAutomatically返回true这种方法才有效, 默认值为:false;

public void setCacheMode(int mode)

一个普通网页的载入cache会被检查,内容也会被又一次校验。第一次訪问网页时,会存储cache到本地,设置策略能够让网页载入方式发生变化。cache模式有例如以下几种:

LOAD_DEFAULT: 假设我们应用程序没有设置不论什么cachemode。 这个是默认的cache方式。 载入一张网页会检查是否有cache。假设有而且没有过期则使用本地cache,否则                                   从网络上获取。

LOAD_CACHE_ELSE_NETWORK: 使用cache资源。即使过期了也使用,假设没有cache才从网络上获取。

LOAD_NO_CACHE: 不使用cache 全部从网络上获取

LOAD_CACHE_ONLY:  仅仅使用cache上的内容。

public void setLoadWithOverviewMode(boolean overview)

概览模式的设置,默认指是false。

public synchronized void setJavaScriptEnabled (boolean flag)

默认值是false.  假设我们网页须要javascript时。须要开启这个设置。否则网页载入不全。

2.WebSettings Webkit中的实现

WebSeetings 的API在Android 系统各个版本号变化不大仅仅是添加API或者deprecate一些API,但其内部是实如今不同版本号中确有些差异。眼下主流android系统版本号主要为Android 4.0以上。分析4.0以上各系统版本号得出webseetings的实现分为三块Android 4.0, Android 4.1---4.3,Android 4.4。以下分析下Android 以上各版本号间的实现:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHlwZW5hbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

1)Android 4.0系统 主要分为两部分,一部分是API层,另一部分Settings的存储位置。

Settings存储位置大部分的setting终于设置到WebCore其中的Settings.cpp, 比方javaScriptEnable等

另一部分依据模块相关存储在模块内部,比方CacheMode存储在FrameLoader其中。

2)Android 4.1--4.3系统对WebView的 framework进行重构,WebSettings对应也跟着变化。

中间引入了桥阶层WebSettingsClassc。

Settings存储位置大部分的setting终于设置到WebCore其中的Settings.cpp, 比方javaScriptEnable等

另一部分跟平台相关的存储在WebCoreSupport层对应模块中。比方在4.1---4.3上CacheMode存储在WebRequestContext

在Android 4.4上WebView底层实现换成了chromium,为了兼容老的WebSettings的接口,Android 4.4做了chromium 的桥阶层,主要涉及的WebSettings相关代码在

ContentSettingsAdapter,AwSettings中。

和前面的一些版本号同样的是大部分settings还是存储在Webkit的Settings.cpp中。这边简介下chromium 使用的blink渲染引擎。而blink是从webkit其中剥离出来的,还保留了webkit的parsing等。因此和我们之前看到的Settings.cpp存储在WebCore文件夹,文件夹结构会有所不同。

另一部分settings在Android 4.4上存储方式也是存储在platform porting层。

以下是一个关于cachemode这个设置的分析:



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHlwZW5hbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

參考资料:

http://developer.android.com/reference/packages.html#q=websettings

https://source.android.com/   Android 4.0---4.4

时间: 2024-10-10 08:28:19

Android WebView 开发具体解释(三)的相关文章

Android WebView 开发具体解释(二)

转载请注明出处  http://blog.csdn.net/typename/article/details/39495409 powered by miechal zhao 概览: Android WebView 做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页载入过程中做应用程序想处理的事情.比方说client须要显示网页载入的进度.网页载入错误发生等等事件. WebView提供两个事件回调类给应用层,分别为WebViewClient,Web

Android WebView 开发详解(三)

转载请注明出处   http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android WebView提供展示网页,也提供我们应用程序对网页加载的一些定制,比如我们为了减少网络数据可以设置当前加载的页面不能显示图片,如果是pc网址在pad上访问我们可以提供用户一种概览模式的浏览方式,可以提供放大网页字体等定制功能.Android 提供管理WebView的一些setting的类WebSe

Android WebView 开发详解

Android WebView 开发详解 1.概览: Android WebView 做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页加载过程中做应用程序想处理的事情.比如说客户端需要显示网页加载的进度.网页加载发生错误等等事件. WebView提供两个事件回调类给应用层,分别为WebViewClient,WebChromeClient开发者可以继承这两个类,接手相应事件处理.WebViewClient 主要提供网页加载各个阶段的通知,比如网页开

Android艺术开发探索第三章————View的事件体系(下)

Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动,现在我们再来聊聊一个比较核心的知识点,那就是事件分发了,而且他还是一个难点,我们更加应该掌握,View的滑动冲突一直都是很苦恼的,这里,我们就来一起探索一下 1.点击事件的传递规则 我们分析的点击事件可不是View.OnClickListener,而是我们MotionEvent,即点击事件,关于M

Android WebView开发常见问题

1.添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误. 2.在要Activity中生成一个WebView组件:WebView webView = new WebView(this); 3.设置WebView基本信息: 如果访问的页面中有Javascript,则webview必须设置支持Javascript. webview.getSettings().set

Android艺术开发探索第三章——View的事件体系(上)

Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 MotionEvent和TouchSlop VelocityTracker,GestureDetector和Scroller View的滑动 使用scrollTo/scrollBy 使用动画 改变布局参数 各种滑动方式的对比 弹性滑动 使用Scroller 通过动画' 使用延时策略 这章的概念偏自定义View方

Android 自定义控件开发入门 (三)

上两次我们从如何自定义控件讲起,列举了View的一些Api,说明了一些在自定义的时候,可以进行重写的方法,然后通过一个例子的两种写法向大家展示了最基本的自定义控件和我们要充分了解并积极重写View方法的精神,这次我们将继续进行学习! 现在请大家回想一下我们使用安卓原生控件时的感受,一个好的控件是可以在xml中进行各种属性的操作的,而自定义控件往往有一些特殊的需求,今天我要讲的就是安卓给自定义控件添加自定义的属性. 下面再给大家具体介绍一下如果自定义的View需要有自定义的属性我们该如何处理: 我

Android WebView 开发详解(一)

转载请注明出处  http://blog.csdn.net/typename/article/details/39030091 powered by meichal zhao 概览: Android WebView在Android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器.WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(A

Android WebView 开发详解(二)

转载请注明出处  http://blog.csdn.net/typename/article/details/39495409 powered by meichal zhao 概览: Android WebView 做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页加载过程中做应用程序想处理的事情.比如说客户端需要显示网页加载的进度.网页加载发生错误等等事件. WebView提供两个事件回调类给应用层,分别为WebViewClient,WebChr