Hybrid APP的离线存储总结

背景: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的形式,免得麻烦。干干净净地写代码才是王道。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FarmerJohn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值