成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Phonegap及瀏覽器端database容量限制問題

移動開發
phonegap及瀏覽器端database容量限制問題是本文要介紹的內容,主要是來了解phonegap database的使用方法,具體內容的實現來看本文詳解。

phonegap瀏覽器database容量限制問題是本文要介紹的內容,主要是來了解phonegap database的使用方法,具體內容的實現來看本文詳解。

關于phonegap:

androidIOS提供了webview視圖,它可以用來展示網頁,支持HTML5。

phonegap正是使用webview來完成對html和css的包裝的。

phonegap允許網頁使用系統級別的功能,如加速器,文件系統等,但這些功能的使用會拖慢運行效率。

phonegap目前并不能真正做到“一次書寫,到處運行”,有些API只支持部分平臺,有些已經提供的API會因為平臺的差異有不同的行為。

phonegap 可以做到無縫升級, 不過需要自己實現升級代碼

關于網頁對于數據庫容量的限制:

native app中展示網頁,使用的數據庫是屬于這個app而不是瀏覽器的

Android:

phonegap在android平臺上,有如下表現:

1. native app中展示網頁,可以通過window.opendatabase()申請容量超過5MB的數據庫

2. 如果因為數據變更導致超出了申請的容量,當前的事務操作會失敗,然后android調用鉤子方法重新設置容量大小。其中:

(1)1.x系統容量不變

(2)2.x系統以上容量增加,上限為100MB

IOS:

phonegap在ios平臺上不提供對database的額外處理。

native app中展示網頁,網頁所使用的database,limit為5MB,超出這個限制,操作會默默的失敗,并且目前沒有可以改變這個限制的方法。
ios中要想使用50MB的數據庫,必須通過web app方式,除非自行開發功能,將database操作映射到系統的database上。但是由于ios系統的限制,自行開發工作量大。

IOS中webview突破database size的5M限制

當在safari中申請超過5m大小的空間時,會彈出提醒讓用戶確認,但webview中卻只是默默的失敗。其實5M大小基本也夠用了,但如果應用的多媒體內容很多,這點容量則會顯得捉襟見肘。如果非要用webview不可,非要突破這個5M限制不可,就可以像下面這樣折騰。

雖然兩者使用的是同一個瀏覽器核心,但是webview在有些細節上和safari會不相同,如果要把webapp直接包裝移植成native app,會有點麻煩。

由于目前沒有方法通過操作webview對象來放寬database size的限制,所以需要考慮調用ios系統的sqlite數據庫:當網頁依照websql的api調用database.transaction的時候,調用請求由app而不是瀏覽器(webview)去處理。

因此在ios上,需要覆蓋opendatabase的實現,返回定制過的database對象,這個對象將把所有的sql調用發送到ios后端,并響應執行結果。執行序列要保證一致,事務完整性必須被支持。

js前端

覆蓋database

  1. database = function() {  
  2.    this.queryQueue = {};  
  3.     }  
  4. window.opendatabase = function(){return new database();} 

將sql調用發送到后端,利用phonegap提供的框架支持:

  1. PhoneGap.exec(null, null, "database", "executeSql", [sql, params, trackId]); 

提供一個用于ios后端傳遞運行結果的鉤子:

  1. function executeSqlSuccessIOSCallback(dataObj){...} 

這個調用會構造出一個不可見的iframe,iframe對外發出的url請求會被ios后端捕獲。

ios后端

相應js調用,利用phonegap提供的框架支持,擴展phonegapCommand

  1. @interface database : PhoneGapCommand {}  
  2. -(void) executeSql:(NSMutableArray *)arguments withDict:(NSMutableDictionary*)options;  
  3. @end 

注意這里的參數是固定的,方法名對應js調用中的第四個參數,有一種調用就實現一個對應的方法

當executesql產生結果時,調用webview的執行js的接口,把結果放入executeSqlSuccessIOSCallback的參數中,從而使頁面知道sql執行完畢并拿到結果

保證執行序列一致

js調用中附加了一個trackId,這個可以根據當前時間來生成,可以用來排序。不過目前來看似乎也沒用.

websql api中,sql執行都是在某個事務中進行的,而sqlite作為單文件全局寫鎖的數據庫,同一個時間只能有一個事務在執行,其他事務必須要等待依次執行,因此隊列是必須的。

小結:Phonegap瀏覽器database容量限制問題的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 博客園
相關推薦

2013-11-05 10:22:20

瀏覽器加密

2023-08-28 08:00:00

人工智能AgentGPT

2012-03-20 11:41:18

海豚瀏覽器

2012-03-19 17:25:22

2012-03-20 11:31:58

移動瀏覽器

2012-03-20 11:07:08

2017-04-06 15:40:31

客戶端數據存儲技術

2022-08-30 09:01:11

瀏覽器渲染前端

2013-11-20 14:25:45

瀏覽器重繪

2012-06-21 15:38:02

獵豹瀏覽器

2010-04-05 21:57:14

Netscape瀏覽器

2012-03-19 17:17:00

移動瀏覽器歐朋

2012-03-20 11:22:02

QQ手機瀏覽器

2023-12-12 09:45:16

前端瀏覽器

2011-12-14 10:01:32

瀏覽器歷史

2012-03-20 11:35:32

傲游手機瀏覽器

2016-01-05 12:54:52

瀏覽器瀏覽器端緩存

2010-03-03 15:57:23

2010-09-15 09:43:24

Javascript瀏覽器兼容

2010-08-11 13:35:10

JavaScriptCSS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频网 | 久久国产99 | 久久网站免费视频 | 91久久久久久久久 | 精品欧美一区二区中文字幕视频 | 免费在线观看av网站 | 黄色毛片黄色毛片 | 四虎影视 | 国产成人精品一区二区三区四区 | 综合精品在线 | 久久一| 欧美激情久久久 | 日韩在线综合 | 久久久久综合 | 国产传媒在线播放 | 亚洲播放| 欧美日韩国产传媒 | 国产精品久久久久久久午夜片 | 欧美激情一区 | 日韩免费福利视频 | 日日草天天干 | 免费啪啪 | 超黄毛片| 欧美视频成人 | 91xxx在线观看 | 在线日韩| 一区二区三区精品 | 国产日韩欧美在线观看 | 久久99视频精品 | 国产高清一区二区三区 | 国产一区二区三区在线视频 | 亚洲网一区 | 久久久久国产一区二区三区 | 午夜在线观看视频 | 日日日干干干 | 伊人在线 | 成人久久| 毛片软件 | 精品久久精品 | 岛国一区 | 亚洲天堂日韩精品 |