乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Android Browser應(yīng)用程序探討

       aaie_ 2012-09-03

      一、WebKit簡(jiǎn)介
      WebKit是一個(gè)開(kāi)源的瀏覽器網(wǎng)頁(yè)排版引擎,包含WebCore排版引擎和JSCore引擎。
      WebCore和JSCore引擎來(lái)自于KDE項(xiàng)目的KHTML和KJS開(kāi)源項(xiàng)目。Android平臺(tái)的Web引擎框架采用了WebKit項(xiàng)目中的WebCore和JSCore部分,上層由Java語(yǔ)言封裝,并且作
      為API提供給Android應(yīng)用開(kāi)發(fā)者,而底層使用WebKit核心庫(kù)(WebCore和JSCore)進(jìn)行網(wǎng)頁(yè)排版。
      二、WebKit目錄結(jié)構(gòu)

      Android平臺(tái)的WebKit模塊分成Java和WebKit庫(kù)兩個(gè)部分,其目錄結(jié)構(gòu)如下表所示:
      WebKit模塊目錄結(jié)構(gòu)(Java層(根目錄device/java/android/android/webkit))

      1. BrowserFrame.java: BrowserFrame對(duì)象是對(duì)WebCore庫(kù)中的Frame對(duì)象的Java層封裝,用于創(chuàng)建WebCore中定義的Frame,及為該Frame對(duì)象提供Java層回調(diào)方法。

      2. ByteArrayBuilder.java: ByteArrayBuilder輔助對(duì)象,用于byte塊鏈表的處理。

      3. CachLoader.java: URL Cache載入器對(duì)象,該對(duì)象實(shí)現(xiàn)StreadLoader抽象基類,用于通過(guò)CacheResult對(duì)象載入內(nèi)容數(shù)據(jù)。

      4. CacheManager.java: Cache管理對(duì)象,負(fù)責(zé)Java層Cache對(duì)象管理

      5. CacheSyncManager.java: Cache同步管理對(duì)象,負(fù)責(zé)同步RAM和FLASH之間的瀏覽器Cache數(shù)據(jù)。實(shí)際的物理數(shù)據(jù)操作在WebSyncManager對(duì)象中完成。

      6. CallbackProxy.java: 該對(duì)象是用于處理WebCore與UI線程消息的代理類。當(dāng)有Web事件產(chǎn)生時(shí)WebCore線程會(huì)調(diào)用該回調(diào)代理類,代理類會(huì)通過(guò)消息的方式通知UI線程,并且調(diào)用設(shè)置的客戶對(duì)象的回調(diào)函數(shù)。

      7. CellList.java: CellList定義圖片集合中的Cell,管理Cell圖片的繪制、狀態(tài)改變以及索引。

      8. CookieManager.java: 根據(jù)RFC2109規(guī)范,管理cookies

      9. CookieSyncManager.java: Cookies同步管理對(duì)象,該對(duì)象負(fù)責(zé)同步RAM和Flash之間的Cookies數(shù)據(jù)。實(shí)際的物理數(shù)據(jù)操作在基類WebSyncManager中完成。

      10. DataLoader.java: 數(shù)據(jù)載入器對(duì)象,用于載入網(wǎng)頁(yè)數(shù)據(jù)。

      11. DateSorter.java: 尚未使用

      12. DownloadListener.java: 下載偵聽(tīng)器接口

      13. DownloadManagerCore.java: 下載管理器對(duì)象,管理下載列表。該對(duì)象運(yùn)行在WebKit的線程中,通過(guò)CallbackProxy對(duì)象與UI線程交互。

      14. FileLoader.java: 文件載入器,將文件數(shù)據(jù)載入到Frame中。

      15. FrameLoader.java: Frame載入器,用于載入網(wǎng)頁(yè)Frame數(shù)據(jù)

      16. HttpAuthHandler.java: Http認(rèn)證處理對(duì)象,該對(duì)象會(huì)作為參數(shù)傳遞給BrowserCallback.displayHttpAuthDialog方法,與用戶交互。

      17. HttpDataTime.java: 該對(duì)象是處理HTTP日期的輔助對(duì)象。

      18. JsConfirmResult.java: Js確認(rèn)請(qǐng)求對(duì)象

      19. JsPromptResult.java: Js結(jié)果提示對(duì)象,用于向用戶提示Javascript運(yùn)行結(jié)果。

      20. JsResult.java: Js結(jié)果對(duì)象,用于用戶交互

      21. JWebCoreJavaBridge.java: 用Java與WebCore庫(kù)中Timer和Cookies對(duì)象交互的橋接代碼。

      22. LoadListener.java: 載入器偵聽(tīng)器,用于處理載入器偵聽(tīng)消息。

      23. Network.java: 該對(duì)象封裝網(wǎng)絡(luò)連接邏輯,為調(diào)用者提供更為高級(jí)的網(wǎng)絡(luò)連接接口。

      24. PanZoom.java: 用于處理圖片縮放、移動(dòng)等操作

      25. PanZoomCellList.java: 用于保存移動(dòng)、縮放圖片的Cell

      26. PerfChecker.java: 用于效率測(cè)試的功能對(duì)象?

      27. SslErrorHandler.java: 用于處理SSL錯(cuò)誤消息。

      28. StreamLoader.java: StreamLoader抽象類是所有內(nèi)容載入器對(duì)象的基類。該類是通過(guò)消息方式控制的狀態(tài)機(jī),用于將數(shù)據(jù)載入到Frame中。

      29. TextDialog.java: 用于處理html中文本區(qū)域疊加情況,可以使用標(biāo)準(zhǔn)的文本編輯而定義的特殊EditText控件。

      30. URLUtil.java: URL處理功能函數(shù),用于編碼、解碼URL字符串,以及提供附加的URL類型分析功能。

      31. WebBackForwardList.java: 該對(duì)象包含WebView對(duì)象中顯示的歷史數(shù)據(jù)。

      32. WebBackForwardListClient.java :瀏覽歷史處理的客戶接口類,所有需要接收瀏覽歷史改變的類都需要實(shí)現(xiàn)該接口。

      33. WebChromeClient.java: Chrome客戶基類,Chrome客戶對(duì)象在瀏覽器文檔標(biāo)題、進(jìn)度條、圖標(biāo)改變時(shí)候會(huì)得到通知。

      34. WebHistoryItem.java: 該對(duì)象用于保存一條網(wǎng)頁(yè)歷史數(shù)據(jù)

      35. WebIconDataBase.java: 圖表數(shù)據(jù)庫(kù)管理對(duì)象,所有的WebView均請(qǐng)求相同的圖標(biāo)數(shù)據(jù)庫(kù)對(duì)象。

      36. WebSettings.java: WebView的管理設(shè)置數(shù)據(jù),該對(duì)象數(shù)據(jù)是通過(guò)JNI接口從底層獲取。

      37. WebSyncManager.java: 數(shù)據(jù)同步對(duì)象,用于RAM數(shù)據(jù)和FLASH數(shù)據(jù)的同步操作。

      38. WebView.java: Web視圖對(duì)象,用于基本的網(wǎng)頁(yè)數(shù)據(jù)載入、顯示等UI操作。

      39. WebViewClient.java: Web視圖客戶對(duì)象,在Web視圖中有事件產(chǎn)生時(shí),該對(duì)象可以獲得通知。

      40. WebViewCore.java: 該對(duì)象對(duì)WebCore庫(kù)進(jìn)行封裝,將UI線程中的數(shù)據(jù)請(qǐng)求發(fā)送給WebCore處理,并通過(guò)CallbackProxy的方式,通過(guò)消息通知UI線程數(shù)據(jù)處理結(jié)果。

      41. WebViewDatabase.java: 該對(duì)象使用SQLiteDatabase為WebCore模塊提供數(shù)據(jù)存取操作。

       

       

      WebKit – WebKit For Android

      一、WebKit簡(jiǎn)介
      WebKit是一個(gè)開(kāi)源的瀏覽器網(wǎng)頁(yè)排版引擎,包含WebCore排版引擎和JSCore引擎
      WebCore和JSCore引擎來(lái)自于KDE項(xiàng)目的KHTML和KJS開(kāi)源項(xiàng)目。Android平臺(tái)的Web引擎框架采用了WebKit項(xiàng)目中的WebCore和JSCore部分,上層由Java語(yǔ)言封裝,并且作
      為API提供給Android應(yīng)用開(kāi)發(fā)者,而底層使用WebKit核心庫(kù)(WebCore和JSCore)進(jìn)行網(wǎng)頁(yè)排版。
      二、WebKit目錄結(jié)構(gòu)

      Android平臺(tái)的WebKit模塊分成Java和WebKit庫(kù)兩個(gè)部分,其目錄結(jié)構(gòu)如下表所示:
      WebKit模塊目錄結(jié)構(gòu)(Java層(根目錄device/java/android/android/webkit))

      1. BrowserFrame.java: BrowserFrame對(duì)象是對(duì)WebCore庫(kù)中的Frame對(duì)象的Java層封裝,用于創(chuàng)建WebCore中定義的Frame,及為該Frame對(duì)象提供Java層回調(diào)方法。

      2. ByteArrayBuilder.java: ByteArrayBuilder輔助對(duì)象,用于byte塊鏈表的處理。

      3. CachLoader.java: URL Cache載入器對(duì)象,該對(duì)象實(shí)現(xiàn)StreadLoader抽象基類,用于通過(guò)CacheResult對(duì)象載入內(nèi)容數(shù)據(jù)。

      4. CacheManager.java: Cache管理對(duì)象,負(fù)責(zé)Java層Cache對(duì)象管理

      5. CacheSyncManager.java: Cache同步管理對(duì)象,負(fù)責(zé)同步RAM和FLASH之間的瀏覽器Cache數(shù)據(jù)。實(shí)際的物理數(shù)據(jù)操作在WebSyncManager對(duì)象中完成。

      6. CallbackProxy.java: 該對(duì)象是用于處理WebCore與UI線程消息的代理類。當(dāng)有Web事件產(chǎn)生時(shí)WebCore線程會(huì)調(diào)用該回調(diào)代理類,代理類會(huì)通過(guò)消息的方式通知UI線程,并且調(diào)用設(shè)置的客戶對(duì)象的回調(diào)函數(shù)。

      7. CellList.java: CellList定義圖片集合中的Cell,管理Cell圖片的繪制、狀態(tài)改變以及索引。

      8. CookieManager.java: 根據(jù)RFC2109規(guī)范,管理cookies

      9. CookieSyncManager.java: Cookies同步管理對(duì)象,該對(duì)象負(fù)責(zé)同步RAM和Flash之間的Cookies數(shù)據(jù)。實(shí)際的物理數(shù)據(jù)操作在基類WebSyncManager中完成。

      10. DataLoader.java: 數(shù)據(jù)載入器對(duì)象,用于載入網(wǎng)頁(yè)數(shù)據(jù)。

      11. DateSorter.java: 尚未使用

      12. DownloadListener.java: 下載偵聽(tīng)器接口

      13. DownloadManagerCore.java: 下載管理器對(duì)象,管理下載列表。該對(duì)象運(yùn)行在WebKit的線程中,通過(guò)CallbackProxy對(duì)象與UI線程交互。

      14. FileLoader.java: 文件載入器,將文件數(shù)據(jù)載入到Frame中。

      15. FrameLoader.java: Frame載入器,用于載入網(wǎng)頁(yè)Frame數(shù)據(jù)

      16. HttpAuthHandler.java: Http認(rèn)證處理對(duì)象,該對(duì)象會(huì)作為參數(shù)傳遞給BrowserCallback.displayHttpAuthDialog方法,與用戶交互。

      17. HttpDataTime.java: 該對(duì)象是處理HTTP日期的輔助對(duì)象。

      18. JsConfirmResult.java: Js確認(rèn)請(qǐng)求對(duì)象

      19. JsPromptResult.java: Js結(jié)果提示對(duì)象,用于向用戶提示Javascript運(yùn)行結(jié)果。

      20. JsResult.java: Js結(jié)果對(duì)象,用于用戶交互

      21. JWebCoreJavaBridge.java: 用Java與WebCore庫(kù)中Timer和Cookies對(duì)象交互的橋接代碼。

      22. LoadListener.java: 載入器偵聽(tīng)器,用于處理載入器偵聽(tīng)消息。

      23. Network.java: 該對(duì)象封裝網(wǎng)絡(luò)連接邏輯,為調(diào)用者提供更為高級(jí)的網(wǎng)絡(luò)連接接口。

      24. PanZoom.java: 用于處理圖片縮放、移動(dòng)等操作

      25. PanZoomCellList.java: 用于保存移動(dòng)、縮放圖片的Cell

      26. PerfChecker.java: 用于效率測(cè)試的功能對(duì)象?

      27. SslErrorHandler.java: 用于處理SSL錯(cuò)誤消息。

      28. StreamLoader.java: StreamLoader抽象類是所有內(nèi)容載入器對(duì)象的基類。該類是通過(guò)消息方式控制的狀態(tài)機(jī),用于將數(shù)據(jù)載入到Frame中。

      29. TextDialog.java: 用于處理html中文本區(qū)域疊加情況,可以使用標(biāo)準(zhǔn)的文本編輯而定義的特殊EditText控件。

      30. URLUtil.java: URL處理功能函數(shù),用于編碼、解碼URL字符串,以及提供附加的URL類型分析功能。

      31. WebBackForwardList.java: 該對(duì)象包含WebView對(duì)象中顯示的歷史數(shù)據(jù)。

      32. WebBackForwardListClient.java :瀏覽歷史處理的客戶接口類,所有需要接收瀏覽歷史改變的類都需要實(shí)現(xiàn)該接口。

      33. WebChromeClient.java: Chrome客戶基類,Chrome客戶對(duì)象在瀏覽器文檔標(biāo)題、進(jìn)度條、圖標(biāo)改變時(shí)候會(huì)得到通知。

      34. WebHistoryItem.java: 該對(duì)象用于保存一條網(wǎng)頁(yè)歷史數(shù)據(jù)

      35. WebIconDataBase.java: 圖表數(shù)據(jù)庫(kù)管理對(duì)象,所有的WebView均請(qǐng)求相同的圖標(biāo)數(shù)據(jù)庫(kù)對(duì)象。

      36. WebSettings.java: WebView的管理設(shè)置數(shù)據(jù),該對(duì)象數(shù)據(jù)是通過(guò)JNI接口從底層獲取。

      37. WebSyncManager.java: 數(shù)據(jù)同步對(duì)象,用于RAM數(shù)據(jù)和FLASH數(shù)據(jù)的同步操作。

      38. WebView.java: Web視圖對(duì)象,用于基本的網(wǎng)頁(yè)數(shù)據(jù)載入、顯示等UI操作。

      39. WebViewClient.java: Web視圖客戶對(duì)象,在Web視圖中有事件產(chǎn)生時(shí),該對(duì)象可以獲得通知。

      40. WebViewCore.java: 該對(duì)象對(duì)WebCore庫(kù)進(jìn)行封裝,將UI線程中的數(shù)據(jù)請(qǐng)求發(fā)送給WebCore處理,并通過(guò)CallbackProxy的方式,通過(guò)消息通知UI線程數(shù)據(jù)處理結(jié)果。

      41. WebViewDatabase.java: 該對(duì)象使用SQLiteDatabase為WebCore模塊提供數(shù)據(jù)存取操作。

      三、WebKit模塊框架

          Android平臺(tái)的WebKit模塊由Java層和WebKit庫(kù)兩個(gè)部分組成,Java層負(fù)責(zé)與Android應(yīng)用程序進(jìn)行通信,而WebKit類庫(kù)負(fù)責(zé)實(shí)際的網(wǎng)頁(yè)排版處理。Java層和C層庫(kù)之間通過(guò)JNI和Bridge相互調(diào)用,如下圖所示:

      WebKit – WebKit For Android - 博客文庫(kù) - 博客園 - littlefermat - littlefermat

      3.1 Java層框架
      3.1.1 主要類關(guān)系

      WebKit模塊的Java層一共由41個(gè)文件組成,其中主要的類關(guān)系如下圖所示:

      WebKit – WebKit For Android - 博客文庫(kù) - 博客園 - littlefermat - littlefermat

      1. WebView

          WebView類是WebKit模塊Java層的視圖類,所有需要使用Web瀏覽功能的Android應(yīng)用程序都要?jiǎng)?chuàng)建該視圖對(duì)象顯示和處理請(qǐng)求的網(wǎng)絡(luò)資 源。目前,WebKit模塊支持HTTP、HTTPS、FTP以及javascript請(qǐng)求。WebView作為應(yīng)用程序的UI接口,為用戶提供了一系列 的網(wǎng)頁(yè)瀏覽、用戶交互接口,客戶程序通過(guò)這些接口訪問(wèn)WebKit核心代碼。

      2. WebViewDatabase

          WebViewDatabase是WebKit模塊中針對(duì)SQLiteDatabase對(duì)象的封裝,用于存儲(chǔ)和獲取運(yùn)行時(shí)瀏覽器保存的緩沖數(shù)據(jù)、歷史訪問(wèn)數(shù)據(jù)、瀏覽器配置數(shù)據(jù)等。該對(duì)象是一個(gè)單實(shí)例對(duì)象,通過(guò)getInstance方法獲取WebViewDatabase的實(shí)例。WebViewDatabase是WebKit模塊中的內(nèi)部對(duì)象,僅供WebKit框架內(nèi)部使用。

      3. WebViewCore

          WebViewCore類是Java層與C層WebKit核心庫(kù)的交互類,客戶程序調(diào)用WebView的網(wǎng)頁(yè)瀏覽相關(guān)操作會(huì)轉(zhuǎn)發(fā)給BrowserFrame對(duì)象。當(dāng)WebKit核心庫(kù)完成實(shí)際的數(shù)據(jù)分析和處理后會(huì)回調(diào)WebViweCore中定義的一系列JNI接口,這些接口會(huì)通過(guò)CallbackProxy將相關(guān)事件通知相應(yīng)的UI對(duì)象。

      4. CallbackProxy

          CallbackProxy是一個(gè)代理類,用于UI線程和WebCore線程交互。該類定義了一系列與用戶相關(guān)的通知方法,當(dāng)WebCore完成相應(yīng)的數(shù) 據(jù)處理,則會(huì)調(diào)用CallbackProxy類中對(duì)應(yīng)的方法,這些方法通過(guò)消息方式間接調(diào)用相應(yīng)處理對(duì)象的處理方法。詳細(xì)的處理流程在下文中會(huì)具體分析。

      5. BrowserFrame

          BrowserFrame類負(fù)責(zé)URL資源的載入、訪問(wèn)歷史的維護(hù)、數(shù)據(jù)緩存等操作,該類會(huì)通過(guò)JNI接口直接與WebKit C層庫(kù)交互。

      6. JWebCoreJavaBridge

          該類為Java層WebKit代碼提供與C層WebKit核心部分的Timer和Cookies操作相關(guān)的方法。

      7. DownloadManagerCore

          下載管理核心類,該類負(fù)責(zé)管理網(wǎng)絡(luò)資源下載,所有的Web下載操作均有該類同一管理。該類實(shí)例運(yùn)行在WebKit線程當(dāng)中,與UI線程的交互是通過(guò)調(diào)用CallbackProxy對(duì)象中相應(yīng)的方法完成。

      8. WebSettings

          該對(duì)象描述了WEB瀏覽器訪問(wèn)相關(guān)的用戶配置信息。

      9. DownloadListener

          下載偵聽(tīng)接口,如果客戶代碼實(shí)現(xiàn)該接口,則在下載開(kāi)始、失敗、掛起、完成等情況下,DownloadManagerCore對(duì)象會(huì)調(diào)用客戶代碼中實(shí)現(xiàn)的DownloadListener方法。

      10. WebBackForwardList

          WebBackForwarList對(duì)象維護(hù)著用戶訪問(wèn)歷史記錄,該類為客戶程序提供操作訪問(wèn)瀏覽器歷史數(shù)據(jù)的相關(guān)方法。

      11. WebViewClient

          WebViewClient類定義了一系列事件方法,如果Android應(yīng)用程序設(shè)置了WebViewClient派生對(duì)象,則在頁(yè)面載入、資源載入、頁(yè)面訪問(wèn)錯(cuò)誤等情況發(fā)生時(shí),該派生對(duì)象的相應(yīng)方法會(huì)被調(diào)用。

      12. WebBackForwardListClient

          WebBackForwardListClient對(duì)象定義了對(duì)訪問(wèn)歷史操作時(shí)可能產(chǎn)生的事件接口,當(dāng)用戶實(shí)現(xiàn)了該接口,則在操作訪問(wèn)歷史時(shí)(訪問(wèn)歷史移除、訪問(wèn)歷史清空等)用戶會(huì)得到通知。

      13. WebChromeClient

          WebChromeClient類定義了與瀏覽窗口修飾相關(guān)的事件。例如接收到Title、接收到Icon、進(jìn)度變化時(shí),WebChromeClient的相應(yīng)方法會(huì)被調(diào)用。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多