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.

     

      

  • 相关阅读:
    nginx源代码分析--从源代码看nginx框架总结
    [Android]自己定义带删除输入框
    A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包
    cmake使用演示样例与整理总结
    Hibernate也须要呵护——Hibernate的泛型DAO
    hdoj-1242-Rescue【广搜+优先队列】
    五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)
    动态标绘演示系统1.4.3(for ArcGIS Flex)
    CodeForces
    OpenCV——颜色运算
  • 原文地址:https://www.cnblogs.com/haide/p/4041597.html
Copyright © 2011-2022 走看看