您好,登錄后才能下訂單哦!
從瀏覽器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結構的分析暫時到此,后面我們從系統典型場景入手,分析系統典型功能的具體實現。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。