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

回归正题,在项目中的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. unicode 格式 转汉字

    function decodeUnicode($str){ return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', create_function( ...

  2. hadoop2.7.7 分布式集群安装与配置

    环境准备 服务器四台: 系统信息 角色 hostname IP地址 Centos7.4 Mster hadoop-master-001 10.0.15.100 Centos7.4 Slave hado ...

  3. css 学习笔记 常用到的知识

    做 loading 居中 剧中通常就是 top left 50% 再调一下自己就可以了 关键是要有 width height 遇到一些base on content 决定 height 的情况一般上有 ...

  4. php 配置微信公众号

    首先你要在微信公众号官网申请一个公众号,然后登录进去 在网页的左下方找到开发的基本配置 就可以开始配置服务器下面的东西了 点击打开成这个样子的 就是一些参数,url填写你自己服务器的具体地址就好了,我 ...

  5. hdu 5672 尺取还是挺好用的

    先简单介绍下尺取法 http://blog.chinaunix.net/uid-24922718-id-4848418.html 尺取法就是在卡给定条件的时候 不断的改变下标 起点 终点 #inclu ...

  6. Android Studio 代码页跳界面 /java和XML快速切换技巧

    https://www.cnblogs.com/simadi/p/6698666.html?utm_source=itdadao&utm_medium=referral 今天又发现了一个And ...

  7. webapi IHttpActionResult无引用和config.MapHttpAttributeRoutes()无引用解决办法

    1. 打开NuGet,打开方法 工具->库程序包管理器->程序包管理器控制台,如下图所示: 2. 输入如下命令Install-Package Microsoft.AspNet.WebApi ...

  8. Junit 学习1 junit的简单使用

    package junit; import java.sql.Connection; import java.sql.SQLException; import org.junit.Test; impo ...

  9. Go 函数编程

    函数的声明 在 Go 语言中,函数声明通用语法如下: func functionname(parametername type) returntype { // 函数体(具体实现的功能) } 函数的声 ...

  10. 常用的virsh管理命令

    常用的virsh管理命令 列出所有的虚拟机 [root@ubuntu ~]# virsh list --all 显示虚拟机信息 [root@ubuntu ~]# virsh dominfo CentO ...