Browser浅析

本文深入探讨了Android WebView如何由Chromium驱动,详细分析了从App层到Framework层的启动和加载URL的流程。尽管Chromium已取代WebKit,但WebView API保持兼容性,确保应用程序无缝迁移。在启动过程中,Browser Application执行全局变量初始化、Cookie同步管理和UI构建。在BrowserActivity中,通过Controller管理Tab和WebView,加载URL主要涉及Controller、Tab和WebView的交互。在Framework层,WebView调用C/C++层的webkit进行处理。
摘要由CSDN通过智能技术生成

Browser浅析

         纵观浏览器代码可知,Android WebView仍然是由Chromium驱动。与之前的浏览Android4.3源代码相比,可以看到之前版本中的external/WebKit目录被移除掉了,取而代之的是chromium_org。也就是说chromium已经完全取代了之前的WebKit for Android。虽然chromium完全取代了以前的WebKit for Android,但Android WebView的API接口并没有变,与老的版本完全兼容。这样带来的好处是基于WebView构建的APP,无需做任何修改,就能享受chromium内核的高效与强大。

        当启动浏览器并加载一个url时的流程是如何的?基于这个目的分析android平台中browser代码来看下浏览器是如何启动并加载url的….

App层调用:

浏览器启动:

          跟踪代码可知,浏览器启动时首先要加载一些全局的变量、默认属性、初始值、数据存储、数据传递、数据共享等信息。基于这个目的浏览器创建了自己的Application类---,而该类的基类为Application类。之所以使用基类Application是因为Application类是为了那些需要保存全局变量而设计的基本类。

当创建完自己的application类以后需要在中的application标签中进行设置,使用属性android:name=“Browser”注册自己的application类。此处是浏览器的application类-----类名为Browser。

当创建应用程序时OnCreate方法被调用,比应用程序中的其他对象创建的早。这个实现尽可能的快一点,因为在这个时间段内直接影响到应用程序中的第一个Activity / Service / Receiver的启动。而派生类需要复写这个OnCreate方法时必须在该方法中调用super.OnCreate方法并在这个方法中可以进行一些全局变量的初始化以及和上下文(context)有关系的变量和方法之类的信息数据等。

代码如下:

在上面这个应用程序类Browser中可以看到,该类继承于Application类并在派生类Browser中复写了OnCreate()方法。在该方法中调用了基类中的OnCreate方法,实例化了浏览器的CookieSyncManager管理、初始化了BrowserSettings的基本属性以及初始值、预加载了事件和创建了webviewFactory模式。

总之在Browser的OnCreate方法中加载了全局和上下文相关的类和方法。

当浏览器的application类Browser创建以后,需要在AndroidManifest.xml文件中进行设置,在标签<application中使用 android:name属性添加创建的applciaton的名称。

如下所示为浏览器的application名称:Browser

浏览器启动的第一个activity是那个呢?根据logcat中显示的信息可知,当启动浏览器时的第一个activity为BrowserActivity。如下:

浏览器加载URL:

          由于浏览器启动时的第一个activity为BrowserActivity,该activity也就是展现给用户的第一个界面。众所周知,一个activity的启动首先执行的是OnCreate(…)函数,在这个函数中可以加载界面的布局文件、初始化相关的变量和方法等。

那么这个BrowserActivity启动时所执行的动作是什么呢?看下面代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值