最近工作很忙,不仅要抽空进行管理,还有开发任务在身,幸好有一些规划进行指导,所以还能顺利解决问题。在管理和技术上面,我认为技术是硬实力,管理是软实力,自己需要多点时间花在技术上。

回归正题,在项目中的APP端是使用H5进行开发,原生部分提供一个壳进行加载页面,这样页面布局和业务逻辑能写一次在安卓和苹果同时运行。

但其实这种完全用H5进行开发,还是有一定的坑,下面总结一些自己在项目遇到的问题:

1.遇到人脸识别等功能还是需要使用原生引入SDK进行开发,界面也是需要原生。

2.集成第三方分享(微信分享等),必须对WebView主任JS对象,提供分享功能。

3.WebView网络加载体验差,想要原生的体验速度需要做大量的优化(工作量不少)。

当然现在有一些可靠的第三方库帮助我们优化WebView加载性能和速度,原生的WebView通过合理的配置也是能提高网页加载体验和性能。

缓存优化:

我们希望不要每次都要去服务器加载H5,而且使用本地缓存过的页面。

webSetting.setCacheMode(WebSettings.LOAD_DEFAULT);

设置了缓存后,WebView会去使用缓存过的内容(包括html、css、js、图片等),使用缓存能大大提供页面性能。

资源优化:

有时候H5页面引用了一些比较常规的第三方JS库或者其他资源,可以把这些JS库或者资源放到本地。

WebViewClient.shouldInterceptRequest()

通过设置WebViewClient,可以拦截URL请求,此方法返回WebResourceResponse对象,可以new出来并匹配加载本地资源。

性能优化:

单单通过优化WebView有时候并不能完全达到理想条件,因为页面的渲染性能由前端的代码优化才能保证。

在Android开发中一般使用 chrome://inspect 工具进行调试WebView的加载性能问题,通过此工具可以查看 App 中 WebView 当前页面的网络请求耗时和页面执行性能等待的数据,可以快速判定页面的性能问题在哪一环节出现问题。

WebView.setWebContentsDebuggingEnabled(true);

在代码中开启调试模式,这样就可以在 Chrome 浏览器进行 WebView调试监控,非常方面。

【安卓基础】WebView开发优化基础的更多相关文章

  1. (一)安卓小app开发之基础环境搭建

    一.准备工作: 1.下载Android Studio开发环境 https://dl.google.com/dl/android/studio/ide-zips/2.1.1.0/android-stud ...

  2. android webview开发问题及优化汇总

    我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...

  3. JAVA开发语言基础

    很多时候我们都不知道,为什么android最开始要用java作为基础语言 看看知乎上都是怎么回答的 为什么java最初成为android开发的基础语言 ------------------------ ...

  4. python基础===Python性能优化的20条建议

    优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...

  5. Web开发——HTML基础

    文档资料参考: 参考:MDN官网 参考:http://www.runoob.com,W3School 参考:https://developer.mozilla.org/zh-CN/docs/Learn ...

  6. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍

    2013年04月19日 14:09:37 MJiao 阅读数:4614   深入浅出node.js游戏服务器开发1——基础架构与框架介绍   游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...

  7. ArcGIS Engine开发前基础知识(4)

    ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...

  8. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  9. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

随机推荐

  1. Java基础---Java三元运算

    一元运算符:只需要一个数据就可以进行操作的运算符.例如:取反!.自增++.自减--二元运算符:需要两个数据才可以进行操作的运算符.例如:加法+.赋值=三元运算符:需要三个数据才可以进行操作的运算符. ...

  2. Fabric分支/版本切换问题

    (以下示例是从 release-1.4 切换到 release-1.3) 首先将 $GOAPTH/src/github.com/hyperledger/ 下1.4版本的fabric-samples给删 ...

  3. odoo——日历的一对多与多对一

    # model文件 # -*- coding: utf-8 -*- from odoo import api, fields, models class TodoTestYear(models.Mod ...

  4. msyql 去重

    delete from userinfo where busi_id in (select busi_id from (select busi_id from userinfo group by bu ...

  5. THUPC2019/CTS2019/APIO2019游记

    Day -? 居然还能报上thupc,我在队里唯一的作用大约是cfrating稍微高点方便过审.另外两位是lz和xyy. Day -2 我夫人生日! Day -1 lz和xyy的家长都来了带我飞.住在 ...

  6. 50道高级sql练习题;大大提高自己的sql能力(附具体的sql)

    问题及描述:--1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表Course(CID ...

  7. Linux命令(1)grep

    开发过程中,与测试运维中 逐渐学习 运维常用的Linux 命令: 转自https://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Lin ...

  8. JavaScript引入

    三种引入方式 js标签引入的三种方式 1.行间式 写在标签的事件属性中 <div onclick="alert('hello')"></div>(点击出弹窗 ...

  9. div上中下布局中间自适应

    需求1: 头尾固定高度,中间自适应 1.上部(header)Div高度固定100px,宽度100%: 2.下部(footer)Div高度固定100px,宽度100%: 3.中部(middle)DIV高 ...

  10. maven项目下pom.xml依赖报错

    百度了好几次,说是在本地仓库下少plugin,但是找了之后,发现并没有少呀