91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

蒙山县| 开远市| 禄丰县| 永城市| 满洲里市| 宁都县| 子洲县| 和龙市| 万州区| 霍邱县| 庐江县| 大同市| 肃南| 漳州市| 略阳县| 高密市| 宜兰县| 连州市| 闸北区| 邵东县| 柳河县| 平南县| 资讯| 华蓥市| 云南省| 额济纳旗| 萨嘎县| 凤阳县| 夏邑县| 鲜城| 闻喜县| 屏边| 凌云县| 吉安市| 调兵山市| 鄂尔多斯市| 宕昌县| 乌拉特后旗| 黑龙江省| 曲水县| 刚察县|