zoukankan      html  css  js  c++  java
  • android webkit 初始化流程

    以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++ 层的关键类.

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


     

    5,android 浏览器上实现式.

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

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

     

      

  • 相关阅读:
    iView -- TimePicker 自定义修改时间选择器选择时间面板样式
    Go语言--容器:存储和组织数据的方式--数组、切片
    php递归实现一维数组转为指定树状结构 --- 省市区处理
    Go语言--基础语法笔记
    Mongodb 安装错误汇总
    GIt -- git push 远程分支老是需要重新输入公钥密码问题处理?
    GIt -- fatal: refusing to merge unrelated histories 问题处理
    Linux -- Centos6 yum安装相关问题与处理
    Linux -- Xshell ,Xftp远程连接中文乱码怎么解决?
    Laravel 多数据库配置及查询操作
  • 原文地址:https://www.cnblogs.com/haide/p/4041597.html
Copyright © 2011-2022 走看看