Android浏览器的研究(三)---APK,Activity,Controller和Ui

从浏览器Apk的AndroidManifest.xml文件看到,Apk的Application 类和主Activity类分别是 Browser和BrowserActivity。

成都创新互联是一家专业提供通州企业网站建设,专注与成都网站设计、成都做网站、H5页面制作、小程序制作等业务。10年已为通州众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

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结构的分析暂时到此,后面我们从系统典型场景入手,分析系统典型功能的具体实现。



文章名称:Android浏览器的研究(三)---APK,Activity,Controller和Ui
URL分享:http://pwwzsj.com/article/pooohd.html