【安卓基础】WebView开发优化基础
最近工作很忙,不仅要抽空进行管理,还有开发任务在身,幸好有一些规划进行指导,所以还能顺利解决问题。在管理和技术上面,我认为技术是硬实力,管理是软实力,自己需要多点时间花在技术上。
回归正题,在项目中的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开发优化基础的更多相关文章
- (一)安卓小app开发之基础环境搭建
一.准备工作: 1.下载Android Studio开发环境 https://dl.google.com/dl/android/studio/ide-zips/2.1.1.0/android-stud ...
- android webview开发问题及优化汇总
我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...
- JAVA开发语言基础
很多时候我们都不知道,为什么android最开始要用java作为基础语言 看看知乎上都是怎么回答的 为什么java最初成为android开发的基础语言 ------------------------ ...
- python基础===Python性能优化的20条建议
优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...
- Web开发——HTML基础
文档资料参考: 参考:MDN官网 参考:http://www.runoob.com,W3School 参考:https://developer.mozilla.org/zh-CN/docs/Learn ...
- 深入浅出node.js游戏服务器开发1——基础架构与框架介绍
2013年04月19日 14:09:37 MJiao 阅读数:4614 深入浅出node.js游戏服务器开发1——基础架构与框架介绍 游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...
- ArcGIS Engine开发前基础知识(4)
ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
随机推荐
- JS 定时器/延时器
定时器 创建定时器 window.setInterval(方法类型,间隔时间(1000=1秒)) var timer=window.setInterval(func,2000); var i=0 ...
- 1186: 零起点学算法93——改革春风吹满地(C)
一.题目 http://acm.wust.edu.cn/problem.php?id=1186&soj=0 二.分析 多组输入,'0'结束: 顶点的个数在3至100之间: 一定顺序输入坐标: ...
- java——数据类型和运算符
强类型语言 Java语言是一门强类型语言.强类型包含两方面的含义:①所有的变量必须先声明.后使用:②指定类型的变量只能接受类型与之匹配的值.强类型语言可以在编译过程中发现源代码的错误,从而保证程序更加 ...
- django 浅谈索引(转)
https://blog.csdn.net/qq_37049050/article/details/80749381
- WebSocket协议探究(一)
一 复习和目标 1 复习 上一节使用wireshark抓包分析了WebSocket流量 包含连接的建立:HTTP协议升级WebSocket协议 使用建立完成的WebSocket协议发送数据 2 目标 ...
- spring源码(1)---idea基础环境搭建
一.环境准备 1. jdk1.8.1 做java开发的这个应该能自己找到 2.gradle-4.9 https://services.gradle.org/distributions/ 没用过grad ...
- javaweb常识
Tomcat下载地址www.apache.org 在电脑中查看java版本:cmd中输入java -version tomcat解压后目录 bin:放可执行文件(如startup.bat shut ...
- Linux环境下Redis安装和常见问题的解决
Redis是一款非常非常非常好用的缓存数据库,在保存需要定期更新的Token值,或者在保证高并发安全可靠性的场景下,基本上说是必用了. 安装过好多次Redis了,也用过阿里云Redis数据库,但是每次 ...
- C# 中 Linq 操作 DataTable
方法一:更简洁 Console.WriteLine(dt.Rows.OfType<DataRow>().First(x => x.Field<string>(" ...
- Oracle学习笔记——imp还原数据库
1. 创建用户及指定用户名密码 create user [用户名] identified by [密码]; create user fskxjsxy identified by fskxjs ...