温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-18 13:41:54 来源:网络 阅读:1299 作者:孙洪波 栏目:移动开发

从浏览器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