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

回归正题,在项目中的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. windows下编译libevent(2.1.8)及使用

    一:获取libevent github地址:https://github.com/libevent/libevent/releases 下载2.1.8稳定版 二:编译libevent 我是用的visu ...

  2. Python senium 中页面属性

    1.通过id定位元素2.通过class_name定位元素3.通过tag_name定位元素4.通过name定位元素5.通过link文字精确定位元素6.通过link文字模糊定位元素7.通过CSS定位元素8 ...

  3. Windows下Notepad++连接VMWare中的linux,然后无法安装NppFTP

    一.关于Notepad++版本 我的版本是最新版本:Notepad++ v7.7 32bit 版本最好选择32bit的,看别处的说法是官网上有这样的说明: Note that the most of ...

  4. MySql数据库 优化

    MySQL数据库优化方案 Mysql的优化,大体可以分为三部分:索引的优化,sql慢查询的优化,表的优化. 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更 ...

  5. C# 对象互转

    /// <summary> /// 适用于初始化新实体 /// </summary> static public T RotationMapping<T, S>(S ...

  6. (三十)JSP标签之自定义标签

    创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: 1 ...

  7. Java ShellSort

    Java ShellSort /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternational ...

  8. 解决 Linux grep 不高亮显示

    今天偶然发现一个问题,在 grep 日志的过程中,搜出来一大坨但是被 grep 的那一段未高亮显示,属实有些难受,高亮显示是 Linux 的高亮本来就是 Linux 的功能,与连接工具(我用的 xsh ...

  9. springboot启动流程(十)springboot自动配置机制

    所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 正文 在第七篇文章中我们了解到,refresh过程将会调用ConfigurationClass ...

  10. VBA if...elseif...else语句

    一个If语句,后面可以跟一个或多个由布尔表达式组成的elseif语句,然后是一个默认的else语句,当所有条件变为false时执行else语句块. 语法 以下是VBScript中If...Elseif ...