日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android WebView 开发详解(三)

發布時間:2024/4/17 Android 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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設置的所有函數是異步制定的,因此我們設置某個狀態并不能馬上生效。 [java]?view plaincopy
  • public?synchronized?void?setLoadsImagesAutomatically(boolean?flag)??

  • 設置當前webview是否需要加載圖片,這個標記控制整個webview的狀態,并且對所有的資源都采取這種策略。如果設置為false 那么訪問的當前網址中的所以圖片資源將不會被加載。默認值是true;
    [java]?view plaincopy
  • public?synchronized?void?setBlockNetworkImage?(boolean?flag)??

  • 當getLoadsImagesAutomatically返回true這個方法才有效, 默認值為:false;
    [java]?view plaincopy
  • 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上的內容。

    [java]?view plaincopy
  • public?void?setLoadWithOverviewMode(boolean?overview)??
  • 概覽模式的設置,默認指是false。
    [java]?view plaincopy
  • 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 以上各版本間的實現:
    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這個設置的分析:


    參考資料: http://developer.android.com/reference/packages.html#q=websettings https://source.android.com/? ?Android 4.0---4.4

    總結

    以上是生活随笔為你收集整理的Android WebView 开发详解(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。