日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 aaie_ 2012-09-03

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

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

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

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

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

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

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

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

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

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

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

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

11. DateSorter.java: 尚未使用

12. DownloadListener.java: 下載偵聽器接口

13. DownloadManagerCore.java: 下載管理器對象,管理下載列表。該對象運行在WebKit的線程中,通過CallbackProxy對象與UI線程交互。

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

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

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

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

18. JsConfirmResult.java: Js確認請求對象

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

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

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

22. LoadListener.java: 載入器偵聽器,用于處理載入器偵聽消息。

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

24. PanZoom.java: 用于處理圖片縮放、移動等操作

25. PanZoomCellList.java: 用于保存移動、縮放圖片的Cell

26. PerfChecker.java: 用于效率測試的功能對象?

27. SslErrorHandler.java: 用于處理SSL錯誤消息。

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

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

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

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

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

33. WebChromeClient.java: Chrome客戶基類,Chrome客戶對象在瀏覽器文檔標題、進度條、圖標改變時候會得到通知。

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

35. WebIconDataBase.java: 圖表數(shù)據(jù)庫管理對象,所有的WebView均請求相同的圖標數(shù)據(jù)庫對象。

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

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

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

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

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

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

 

 

WebKit – WebKit For Android

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

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

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

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

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

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

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

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

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

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

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

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

11. DateSorter.java: 尚未使用

12. DownloadListener.java: 下載偵聽器接口

13. DownloadManagerCore.java: 下載管理器對象,管理下載列表。該對象運行在WebKit的線程中,通過CallbackProxy對象與UI線程交互。

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

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

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

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

18. JsConfirmResult.java: Js確認請求對象

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

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

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

22. LoadListener.java: 載入器偵聽器,用于處理載入器偵聽消息。

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

24. PanZoom.java: 用于處理圖片縮放、移動等操作

25. PanZoomCellList.java: 用于保存移動、縮放圖片的Cell

26. PerfChecker.java: 用于效率測試的功能對象?

27. SslErrorHandler.java: 用于處理SSL錯誤消息。

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

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

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

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

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

33. WebChromeClient.java: Chrome客戶基類,Chrome客戶對象在瀏覽器文檔標題、進度條、圖標改變時候會得到通知。

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

35. WebIconDataBase.java: 圖表數(shù)據(jù)庫管理對象,所有的WebView均請求相同的圖標數(shù)據(jù)庫對象。

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

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

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

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

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

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

三、WebKit模塊框架

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

WebKit – WebKit For Android - 博客文庫 - 博客園 - littlefermat - littlefermat

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

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

WebKit – WebKit For Android - 博客文庫 - 博客園 - littlefermat - littlefermat

1. WebView

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

2. WebViewDatabase

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

3. WebViewCore

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

4. CallbackProxy

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

5. BrowserFrame

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

6. JWebCoreJavaBridge

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

7. DownloadManagerCore

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

8. WebSettings

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

9. DownloadListener

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

10. WebBackForwardList

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

11. WebViewClient

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

12. WebBackForwardListClient

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

13. WebChromeClient

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多