中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 瀏覽器的研究(三)--- APK, Activity, Controller和Ui

發布時間:2020-07-18 13:41:54 來源:網絡 閱讀:1301 作者:孫洪波 欄目:移動開發

從瀏覽器Apk的AndroidManifest.xml文件看到,Apk的Application 類和主Activity類分別是 Browser和BrowserActivity。

Browser Application類在onCreate方法中進行了以下工作:

1. 同步Cookie

2. 初始化設置

3. 初始化Preloader

BrowserActivity 是Apk的主Activity,我們在Launcher上點擊瀏覽器圖標啟動的就是這個Activity。

查看BrowserActivity的代碼,可以看到它在onCreate方法中創建了Controller成員,然后后續的主要方法都Delegate給了Controller成員進行處理,它自己基本上就是系統功能與Android Activity Life Cycle管理之間的一個Adapter。

 在Controller創建的同時創建了一個Ui對象,看到Apk目前可以支持Tablet(XLargeUi)和手機(PhoneUi)。

 從Controller和Ui大概可以判斷這是一個類似MVC的設計(沒有M,why?)。

 可以期望,系統的基本控制邏輯是在Controller類實現,而Ui則負責Ui的部分。

 

 Controller類基本分析:

 Controller類實現了三個接口:ActivityController,WebViewController,UiController。

 ActivityController:我們已經在BrowserActivity里看到,這個接口用于與Android Activity Life Cycle Management(LCM)進行適配, BrowserActivity只使用該接口訪問Controller,它保持的引用就是一個ActivityController接口:ActivityController mController。 設計模式的基本原則:program to an interface, not an implementation。

 WebViewController:從該接口的方法看到,這個接口除了與WebView交互比較多,還與Tab類交互密切。根據經驗,瀏覽器一般為每個網頁提供一個單獨的Tab,估計這個就是管理該Tab的類。接口的方法與WebViewClient里的方法很類似,可以期望給接口主要實現WebViewClient相關的Customization Point.搜索該接口的使用情況,看到主要是Tab類使用它。Tab類是與WebView進行交互的主要類,看來需要重點研究。

 UiController:與Ui部分控制相關的接口,openTab,closeTab,setActiveTab,書簽,設置等等。正像期望的那樣,Ui類只保持Controller的這個接口:UiController mUiController;


 Ui類基本分析:Ui類層次結構稍微豐富一點點,包括UI接口,BaseUi抽象類和兩個具體類PhoneUi&XLargeUi。Ui的方法主要是跟Tab,Menu等Ui對象相關的方法,這里不具體研究。同樣,Controller與Ui的交互也是通過接口:private UI mUi;

 對Apk結構的分析暫時到此,后面我們從系統典型場景入手,分析系統典型功能的具體實現。






向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

饶平县| 綦江县| 措勤县| 格尔木市| 麟游县| 普兰店市| 江孜县| 嵊泗县| 临泽县| 德惠市| 奉节县| 房产| 婺源县| 冕宁县| 阿合奇县| 恩施市| 天全县| 喀什市| 连云港市| 鄄城县| 巴东县| 云南省| 六枝特区| 花垣县| 永州市| 河源市| 双辽市| 卢龙县| 犍为县| 开平市| 屯昌县| 安顺市| 霍邱县| 沿河| 大新县| 萝北县| 天祝| 津南区| 盐津县| 乐清市| 宾阳县|