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的形式,免得麻煩。干干凈凈地寫代碼才是王道。
總結
以上是生活随笔為你收集整理的Hybrid APP的离线存储总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react(95)--外部定义变量
- 下一篇: 在xp中运行 .air 文件--Adob