以android 4.2为例

1, android 4.2WebViewClassic.java WebView.java的代理类.

2,程序运行后,浏览器首先加载webkit so.

    WebViewCore.java ,apk 运行后只加载一次.

    static {

      // Load libwebcore and libchromium_net during static initialization.

      // This happens in the zygote process so they will be shared read-only

      // across all app processes.

      try {

        System.loadLibrary("chromium_net");

        System.loadLibrary("webcore");

      } catch (UnsatisfiedLinkError e) {

    Log.e(LOGTAG, "Unable to load native support libraries.");

    }

3,loadLibary 后则会初始化对应的JNI.framwork webkitc++ 层关联对应起来.

  主要处理在 WebCoreJniOnLoad.cpp

static RegistrationMethod gWebCoreRegMethods[] = {

{ "JavaBridge", android::registerJavaBridge },

{ "WebFrame", android::registerWebFrame },

{ "WebViewCore", android::registerWebViewCore },

{ "WebHistory", android::registerWebHistory },

{ "WebIconDatabase", android::registerWebIconDatabase },

{ "WebSettingsClassic", android::registerWebSettings },

#if ENABLE(DATABASE)

{ "WebStorage", android::registerWebStorage },

#endif

{ "WebView", android::registerWebView },

{ "ViewStateSerializer", android::registerViewStateSerializer },

{ "GeolocationPermissions", android::registerGeolocationPermissions },

{ "MockGeolocation", android::registerMockGeolocation },

#if ENABLE(VIDEO)

{ "HTML5Audio", android::registerMediaPlayerAudio },

{ "HTML5VideoViewProxy", android::registerMediaPlayerVideo },

#endif

{ "DeviceMotionAndOrientationManager", android::registerDeviceMotionAndOrientationManager },

{ "CookieManager", android::registerCookieManager },

{ "CacheManager", android::registerCacheManager },

};


4.创建WebView:

    webview1 = (WebView) findViewById(R.id.WebView1);

    该行调用后,则会初始webkit ,java c++ 层的关键类.

    下图是各重要的类,创建流程.

android webkit 初始化流程_第1张图片

5,android 浏览器上实现式.

  android 手机浏览器,通过创建WebView.组织WebView 来实现的. 每打开一个窗口(一个Tab) 则创建一个webview.

即,android 浏览器存在多个webview.

  

更多相关文章

  1. Android 浏览器的开发实例分享
  2. Android 应用指定浏览器开发实例
  3. Android 浏览器内核浅谈
  4. Android加载大图Bitmap发生OOM(Out Of Memmory Error)解决方案
  5. 演化理解 Android 异步加载图片
  6. Android黑科技动态加载(四)之动态启动插件Activity
  7. 巧解Android时区加载过慢的问题
  8. android的异步加载与UI
  9. Android 加载模型

随机推荐

  1. Android已有项目接入Flutter及互相通信
  2. 【EditText】Android 中设置 EditText 光
  3. 【Android(安卓)Linux内存及性能优化】(
  4. Android中关于SQLite数据库的一些知识
  5. 36个Android开发常用经典代码大全
  6. Android 应用开发中国大学生挑战赛 & 大
  7. Android MTP之服务端UsbService启动
  8. Android(安卓)WebView总结
  9. Android UI Material Design交互设计(一)
  10. 好的android 相关的技术博客