2013-08-14 6 views
5

In einer normalen Android-Webanwendung beträgt die maximale Größe für eine WebSQL-Datenbank normalerweise 8 MB. In einer hybriden Web-App möchte ich dieses Limit erhöhen. Wie würde ich das machen?Größe des WebSQL-Kontingents in einem WebView erhöhen

Es scheint, dass WebStorage etwas damit zu tun haben könnte, aber die einzige Methode, die ich dort sehen kann, die die Größe einzustellen scheint, setQuotaForOrigin, markiert veraltet.

Beispielcode (das nicht veraltet ist) ist willkommen :)

+0

Ich bin auf der Suche nach der genau entgegengesetzten Lösung. iOS7 hat einen "Fehler", der eine Sicherheitsausnahme auslöst, wenn Sie versuchen, das Größenlimit zu überschreiten. Also muss ich meine DB verkleinern, um das zu vermeiden. Ich poste, was ich diesbezüglich finde. – Chepech

Antwort

5

Das Kontingent für eine Web-App scheint sich von dem einer hybriden App zu unterscheiden (wie in einer in einer Ansicht ausgeführten App). Unabhängig davon, indem Sie das Folgende in Ihre Unterklasse android.app.Activity implementieren, verdoppeln Sie das Kontingent, bis es schließlich bei ungefähr 48 MB endet.

Der Benutzer wird nicht aufgefordert zu interagieren, wenn dies geschieht.

1

Sie können an dieser anderen Frage auf how to increase quota limit suchen.

Sieht so aus, als wäre das Ändern der Größe nur ein Problem für Benutzer, die bereits eine lokale Datenbank erstellt haben, da es keine Möglichkeit gibt, die Größe der Datenbank zu ändern, wenn upgrade scripts for versioning ausgeführt wird. Das heißt, Sie einfach nur die Größe in der Initialisierungsscript ändern müssen (Code in JavaScript):

var size = 10 * 1024 * 1024; // changed from 5 to 10MB 
var db = openDatabase("oversized_db", "v1.1", "Ten MB DB", size); 

berücksichtigen, dass diese nur neue Benutzer auswirken. Alle Benutzer, die zuvor einen DB mit einer anderen Größe erstellt haben, müssen ihren Cache löschen (Sie haben die Kontrolle über den Cache in einem WebView, also nicht so schlimm), aber alle vorherigen Daten sind verloren (es sei denn, Sie migrieren sie manuell in die neue DB) mit nativem Code). In meinem Fall muss ich das gleiche tun, aber die Größe verringern. Das würde sich um das Problem kümmern.

Hoffe, das hilft.

+0

das ist etwas anderes. Dies wirkt sich nicht auf das vom Android-Betriebssystem festgelegte Kontingent aus. Dadurch wird nur die Größe der vorhandenen Datenbank festgelegt. und ich habe noch nicht gesehen, dass das eigentlich etwas ist. In allen Tests, die ich gemacht habe, ist diese Größe nur Quatsch. Ich kann eine Größe von 10 Byte einstellen und ich kann es trotzdem bis zur Überschreitung der Quote füllen. Ich werde jetzt eine Antwort mit weiteren Informationen hinzufügen. – oligofren

+0

Dies ist, wie es für eine regelmäßige Web-App getan wird. Ich bin mir nicht sicher, wie du es machst. Die Grenzen werden jedoch normalerweise vom Browser festgelegt. Auf diese Weise wird versucht, einen DB mit einer festgelegten Größe zu erstellen. – Chepech

+0

Ich weiß, dass es so ist, wie es für eine normale Web-App gemacht wird. Ich sage nur, dass das Größenargument _nothing_. Ich sollte die erwartete Sache machen - stellen Sie die Größe ein, aber es scheint von den meisten Browsern ignoriert zu werden. Die tatsächliche maximale Größe wird vom Browser/View festgelegt. – oligofren

Verwandte Themen