以android 4.2为例

1, android 4.2中 WebViewClassic.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 层webkit与c++ 层关联对应起来.

  主要处理在 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.

  

android webkit 初始化流程的更多相关文章

  1. Android webkit 事件传递流程详解

    前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题.所以索性研究了一下keyevent 事件的传递流程. frameworks 层 keyevent ...

  2. Android webkit 事件传递流程通道分析

    前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题.所以索性研究了一下keyevent 事件的传递流程. frameworks 层 keyevent ...

  3. [Android Webkit]JNI基础及Java层与C++层的交互

    1. JNI 注册 1.1. JNI的基础结构       JAVA == JNI == Native Code      JNI(Java Native Interface)是Java与Native ...

  4. Android WebKit 内核

    一.WebKit简介 WebKit是一个开源的浏览器网页排版引擎,包含WebCore排版引擎和JSCore引擎.WebCore和JSCore引擎来自于KDE项目的KHTML和KJS开源项目.Andro ...

  5. 【转】android 电池(二):android关机充电流程、充电画面显示

    关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4. ...

  6. 关于Flutter初始化流程,我必须告诉你的是...

    1. 引言 最近在做性能优化的时候发现,在混合栈开发中,第一次启动Flutter页面的耗时总会是第二次启动Flutter页面耗时的两倍左右,这样给人感觉很不好.分析发现第一次启动Flutter页面会做 ...

  7. Android之 系统启动流程

    在前一篇文章"Android之 看“马达”如何贯通Android系统 (从硬件设计 --> 驱动 --> HAL --> JNI --> Framework --&g ...

  8. android 电池(二):android关机充电流程、充电画面显示【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8498580 上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下a ...

  9. Android View 布局流程(Layout)完全解析

    前言 上一篇文章,笔者详细讲述了View三大工作流程的第一个,Measure流程,如果对测量流程还不熟悉的读者可以参考一下上一篇文章.测量流程主要是对View树进行测量,获取每一个View的测量宽高, ...

随机推荐

  1. 201871010105-曹玉中《面向对象程序设计(java)》第十七周学习总结

    201871010105-曹玉中<面向对象程序设计(java)>第十七周学习总结 项目 内容 这个作业属于哪个过程 https://www.cnblogs.com/nwnu-daizh/ ...

  2. python---win32gui、win32con、win32api:winAPI操作

    python操作winAPI 窗口操作: import sys from PyQt5.QtWidgets import QApplication, QWidget from lianxi import ...

  3. Django后台获取不到前端axios-post请求提交的参数的解决方法

    解决方法 用 URLSearchParams 传递参数 let param = new URLSearchParams() param.append('username', 'admin') para ...

  4. 卸载python

    # rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps # whereis python|xargs rm -frv

  5. django环境配置(基于命令行安装)

    一.django简介 Python服务端开发框架,Django是一个开放源代码的Web应用框架,由Python写成,Django采用了MVC的软件设计模式,即模型M,视图V和控制器C 二.安装配置dj ...

  6. psd缩略图上传控件

    前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践. ...

  7. Comet OJ - Contest #10 鱼跃龙门 exgcd+推导

    考试的时候推出来了,但是忘了 $exgcd$ 咋求,成功爆蛋~ 这里给出一个求最小正整数解的模板: ll solve(ll A,ll B,ll C) { ll x,y,g,b,ans; gcd = e ...

  8. Windows:打印为PDF(PDF转换器)

    造冰箱的大熊猫@cnblogs 2019/4/17 文中图片可通过点击鼠标右键查看大图 Windows下实现PDF打印的几个办法: 1.Foxit Reader(福昕PDF浏览器) 安装Foxit R ...

  9. HDU 3826 Squarefree number ( 唯一分解定理 )

    题目链接 题意 : 给出一个数.问其能不能被任何一个平方数整除.如果可以则输出 No 即不是 Square-free Number .否则输出 Yes 分析 : 首先 N 有 1e18 那么大.不能暴 ...

  10. 在vue中引入layer弹框的简易方法

    npm i --save layui-layer 2.在main.js中引入 import layer from "layui-layer"; 3.然后就可以在各个组件中使用lay ...