您的位置:首页 > 移动开发

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的形式,免得麻烦。干干净净地写代码才是王道。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hybrid app