Hybrid APP的离线存储总结
2017-11-12 20:55
190 查看
背景:HTML5的出现,新增了很多功能,比如WebSQL、页面缓存等。这对于离线访问页面以及将部分数据存储到本地,提供了很大的便利。
目的:实现离线打开表单,填写后暂存本地,联网后同步到服务器。并且实现Android、iOS、浏览器都能共用代码的开发模式。
解决:以android为例。
将资源文件放在assets里面,然后用Webview加载本地资源(HTML等),最大的问题在于浏览器的同源策略。解决方法是,充分实现java和JS的交互,从而使得所有的网络请求不通过Webview,而是原生API,大致可以参考这篇文章:
http://www.cnblogs.com/cherrylv/p/6424199.html
还一个好处是,这也免去了原生与Webview之间传递cookie的麻烦。
但是,也有很多坑等着我们。
1- 如果数据交互比较多,那么这样写就反而变得十分麻烦。并不仅仅是表单,还有事件排序啊之类的。HTML内部链接比较多时,转接也比较麻烦。难以预测今后有哪些功能需要扩展,给未来挖坑,不是明智的选择。
2- HTML文件并不能直接被浏览器直接利用,必须修改掉与java交互的代码。维护两份近似的代码,其实也是一种麻烦。虽然合理安排或者模块化还是能较好地维护。
3- Webview名存实亡,只是一个HTML解析工具。
4- Webview本身就比较慢,不如原生。
5- 如果想重用HTML,可能需要在java里面使用后端模板引擎,反而麻烦。
6-WebSQL和IndexDB用起来不如okhttp之类的方便。
7- 潜在的无数的坑。
最终决策:对于这种需求的软件,尽量采用原生APP的写法。而对于不需要离线存储的软件,可以考虑混编。
对于老板的软件,暂时采用原生APP的形式,如果需要通过iOS或者电脑使用,那么就再写个web端,但是不支持离线存储。iOS混编时应采用一个Webview的形式,免得麻烦。干干净净地写代码才是王道。
目的:实现离线打开表单,填写后暂存本地,联网后同步到服务器。并且实现Android、iOS、浏览器都能共用代码的开发模式。
解决:以android为例。
将资源文件放在assets里面,然后用Webview加载本地资源(HTML等),最大的问题在于浏览器的同源策略。解决方法是,充分实现java和JS的交互,从而使得所有的网络请求不通过Webview,而是原生API,大致可以参考这篇文章:
http://www.cnblogs.com/cherrylv/p/6424199.html
还一个好处是,这也免去了原生与Webview之间传递cookie的麻烦。
但是,也有很多坑等着我们。
1- 如果数据交互比较多,那么这样写就反而变得十分麻烦。并不仅仅是表单,还有事件排序啊之类的。HTML内部链接比较多时,转接也比较麻烦。难以预测今后有哪些功能需要扩展,给未来挖坑,不是明智的选择。
2- HTML文件并不能直接被浏览器直接利用,必须修改掉与java交互的代码。维护两份近似的代码,其实也是一种麻烦。虽然合理安排或者模块化还是能较好地维护。
3- Webview名存实亡,只是一个HTML解析工具。
4- Webview本身就比较慢,不如原生。
5- 如果想重用HTML,可能需要在java里面使用后端模板引擎,反而麻烦。
6-WebSQL和IndexDB用起来不如okhttp之类的方便。
7- 潜在的无数的坑。
最终决策:对于这种需求的软件,尽量采用原生APP的写法。而对于不需要离线存储的软件,可以考虑混编。
对于老板的软件,暂时采用原生APP的形式,如果需要通过iOS或者电脑使用,那么就再写个web端,但是不支持离线存储。iOS混编时应采用一个Webview的形式,免得麻烦。干干净净地写代码才是王道。
相关文章推荐
- 离线缓存与客户端存储总结
- (转-经典-数据段)C++回顾之static用法总结、对象的存储,作用域与生存期
- HTML5本地、离线、缓存、存储、数据库、文件
- 有趣的HTML5:离线存储
- android存储相关Vold总结
- mysql 5.0存储过程学习总结(上)
- Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结
- 向数据库存储读取图片方法总结
- 【HBase调优】Hbase万亿级存储性能优化总结
- MySQL存储引擎总结
- 离线数据存储
- 88.NSUserDefaults数据存储总结
- 在.NET中调用Oracle9i存储过程经验总结
- MyBatis学习总结(六)——调用存储过…
- Android数据的四种存储方式----总结
- MyBatis学习总结(六)——调用存储过程
- 归档 NSCoding 数据存储小结《IOS编程》 读后总结
- android基础总结-内部存储和外部存储的大局观
- Hbase万亿级存储性能优化总结
- Android IO存储总结