comliesdkversion 33
1.首先看下构造方法,webview 共计7个构造方法但是最终都会调用
通过上图可以看到这个provider类是通过WebViewFactoryProvider接口的实现类的createWebView方法创建出来的,那么就去找他的实现类
WebViewProvider是一个接口,具体的实现不在framework里面。最开始的时候,WebView是android framework的一部分,从Android 5.0 (Lollipop)开始,WebView的实现由一个单独的apk来提供,apk 预置在设备里面,可以和普通应用一样更新
如下为4.4之前还是在framework里面的
WebView的实现apk的源代码保存在
https://github.com/chromium/chromium/tree/master/android_webview
作为Chromium项目代码的一部分,当前AOSP已经不支持从源代码里面编译出WebView
其中WebViewProvider的实现类是WebViewChromium,这个实现类是通过下面的工厂类声场出来的
WebViewChromiumFactoryProvider的实现类如下所示
知道了mprovider的实现类就可以看他的loadurl的实现了
通过上图可以看到加载url的功能转给mAwContents对象,这个类在哪里呢
看一下这个类的一个实现
然后调用了下面的方法
app和h5互相调用
1.h5调用app
1.必须要先注册再loadurl,不能先loadurl在注册
注册方法
h5调用方式是
2.app调用h5
执行结果: