1、如何提高WebView加载速度

美团技术分享

WebView启动过程大概分为以下几个阶段:

App中打开WebView的第一步并不是建立连接,而是启动浏览器内核。

优化手段围绕着以下两个点进行:

  • 预加载WebView。

  • 加载WebView的同时,请求H5页面数据。

常见的方法是全局WebView,在客户端刚启动时,就初始化一个全局的WebView待用,并隐藏;这种方法可以比较有效的减少WebView在App中的首次打开时间。当用户访问页面时,不需要初始化WebView的时间。

当然这也带来了一些问题,包括:

  • 额外的内存消耗。
  • 页面间跳转需要清空上一个页面的痕迹,更容易内存泄露。
  • 客户端代理页面请求WebView初始化完成后向客户端请求数据
  • 在客户端初始化WebView的同时,直接由native开始网络请求数据;
  • 当页面初始化完成后,向native获取其代理请求的数据。
  • asset存放离线包。

除此之外还有一些其他的优化手段:

  • DNS和链接慢:

    • 想办法复用客户端使用的域名和链接,可以让客户端复用使用的域名与链接。
    • DNS采用和客户端API相同的域名
    • DNS会在系统级别进行缓存,对于WebView的地址,如果使用的域名与native的API相同,则可以直接使用缓存的DNS而不用再发起请求图片。
  • 脚本执行慢:可以把框架代码拆分出来,在请求页面之前就执行好。
  • 后端处理慢:可以让服务器分trunk输出,在后端计算的同时前端也加载网络静态资源。

2、WebView与 js的交互

Android去调用JS的代码:

  1. 通过WebView的loadUrl()

  2. 通过WebView的evaluateJavascript()

JS调用Android代码的方法:

  1. 通过WebView的addJavascriptInterface()进行对象映射

  2. 通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url

  3. Android通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt(方法回调分别拦截JS对话框(即上述三个方法),得到他们的消息内容,然后解析即可。

3、WebView的漏洞

Android WebView常见的安全漏洞和解决方案

4、JsBridge原理

JSBridge的原理

WebView相关面试题相关推荐

  1. View的实现和优化相关面试题

    1-ListView优化?ListView如何提高其效率? 1. Item布局,层级越少越好,使用hierarchyview工具查看优化. 2. 复用convertView ,使用历史的view 3. ...

  2. Java Web 相关面试题总结

    为什么80%的码农都做不了架构师?>>>    Spring 相关的的面试题 1.什么是 IoC 容器? 2.解释下 Spring Bean 的生命周期 IoC 容器是 Spring ...

  3. Android性能优化面试题,与性能优化相关面试题 - 与IPC机制相关面试题 - 《Android面试宝典》 - 书栈网 · BookStack...

    源码分析相关面试题 Activity相关面试题 与XMPP相关面试题 与性能优化相关面试题 与登录相关面试题 与开发相关面试题 与人事相关面试题 与人事相关面试题现在三四月份,金三银四最好找工作时间, ...

  4. Vue相关面试题及答案分享

    Web前端重点技能是什么?Vue相关面试题有哪些?Vue是一套构建用户界面的渐进式框架,具有简单易用.性能好.前后端分离等优势,是Web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能.接下来 ...

  5. c++多态相关面试题

    c++多态相关面试题 面试题1:请谈谈你对多态的理解? 面试题2:谈谈C++编译器是如何实现多态 ? 面试题3:谈谈你对重写,重载理解? 面试题4:为什么要定义虚析构函数? 面试题1:请谈谈你对多态的 ...

  6. vue如何获取年月日_好程序员web前端教程分享Vue相关面试题

    好程序员web前端教程分享Vue相关面试题,Vue是一套构建用户界面的渐进式框架,具有简单易用.性能好.前后端分离等优势,是web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能.接下来好程序 ...

  7. 编写算法判别给定二叉树是否为完全二叉树_别找了,链表和二叉树相关面试题以及解答,我都给你们找好了...

    来源公众号:苦逼的码农 作者:帅地 无论是在面试还是在平时的做题中,链表相关算法题以及二叉树相关算法题,可以说是考的非常非常多的.我在 2019 的秋招面试中,也是遇到了好几次.为此,我总结了 9 道 ...

  8. Mybatis执行流程、缓存原理以及相关面试题

    一.Mybatis执行流程 具体分析Mybatis是如何操作数据库的! . 1.定义我们的核心配置文件的路径,这个路径是从target/classes下开始找的! String config = &q ...

  9. MySQL索引分析以及相关面试题

    可以在我的个人博客阅读文章,排版会美观一些:文章地址 1. 什么是索引 一种能帮助mysql提高查询效率的数据结构:索引数据结构 索引优点: 大大提高数据查询速度 索引缺点: 维护索引需要耗费数据库资 ...

最新文章

  1. LINUX TOP,不是这样玩地!!!
  2. java集合代码_Java-集合(示例代码)
  3. ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)
  4. Opencv--Mat类型ROI的设置
  5. mybais逆向工程快速生成实体和基本xml
  6. 用xib自定义UIView并在代码中使用--iOS
  7. C++中获得文件大小
  8. python post cookies_python 之post、get与cookie实战
  9. @程序员,一文掌握 Web 应用中的图片优化技巧!
  10. 令人赞叹的 MySQL
  11. WinDbg蓝屏分析入门
  12. 面向车路协同的路侧感知仿真系统
  13. JVM垃圾回收机制,万字详解
  14. 东北四省赛 Spell Boost
  15. 机器学习实战——xgboost股票close预测
  16. 什么是UI?就业前景如何?
  17. Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
  18. HDU OJ 1998. 奇数阶幻方
  19. 交易系统订单存在的意义
  20. Codeforces gym101981 (2018 icpc 南京站) B.Tournament

热门文章

  1. linux-macbook内核,学习linux用macbook好吗
  2. 酷瓜云课堂(腾讯云版)v1.2.7 发布 - 钉钉机器人群通知
  3. STC15W404AS没有定时器1
  4. 数据库规范化 (1NF, 2NF, 3NF, BCNF)
  5. 计算机网络原理总结(英文版 第五版) Chapter1
  6. com.sun.javaws.Main.launchApp 无法加载制定文件jnlp文件
  7. 手把手教你带货直播源码实现直播功能,不依赖第三方SDK
  8. C# Cookie跨域实例
  9. 2013年二年级语文上册分类复习资料
  10. 自己动手在阿里云服务器上搭建一套zabbix+grafana监控系统