2013-08-14 48 views
5

Trong một ứng dụng web Android thông thường, kích thước tối đa cho cơ sở dữ liệu WebSQL thường là khoảng 8MB. Trong một ứng dụng web lai tôi đang làm tôi muốn tăng giới hạn này. Tôi sẽ làm thế nào?Tăng kích thước của hạn ngạch WebSQL trong một WebView

Có vẻ như WebStorage có thể liên quan đến nó, nhưng phương pháp duy nhất tôi có thể thấy ở đó dường như đặt kích thước, setQuotaForOrigin, được đánh dấu không được chấp nhận.

Mẫu mã (mà không bị phản đối) được chào đón :)

+0

Tôi đang tìm giải pháp đối diện chính xác. iOS7 có một "lỗi" ném một ngoại lệ bảo mật khi bạn cố gắng vượt quá giới hạn kích thước. Vì vậy, tôi cần phải giảm bớt DB của tôi để tránh điều này. Tôi sẽ đăng bất cứ điều gì tôi tìm thấy về vấn đề đó. – Chepech

Trả lời

5

Hạn ngạch cho ứng dụng web dường như khác với hạn ngạch của ứng dụng hỗn hợp (như trong một thứ đang chạy trong chế độ xem). Bất kể, bằng cách thực hiện như sau trong lớp con android.app.Activity của bạn, bạn sẽ tăng gấp đôi hạn ngạch cho đến khi nó dừng lại ở mức xấp xỉ 48MB.

@Override 
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
    quotaUpdater.updateQuota(estimatedSize * 2); 
} 

Người dùng sẽ không được yêu cầu tương tác khi điều này xảy ra.

1

Bạn có thể muốn xem xét câu hỏi này khác trên how to increase quota limit.

Dường như việc thay đổi kích thước chỉ là vấn đề đối với người dùng đã tạo DB cục bộ, điều này là do không có cách nào thay đổi kích thước của DB khi chạy upgrade scripts for versioning. Điều đó nói rằng, bạn chỉ cần thay đổi kích thước trong tập lệnh khởi tạo (mã trong JavaScript):

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

Hãy tính đến điều này sẽ chỉ ảnh hưởng đến người dùng mới. Tất cả người dùng trước đây đã tạo một DB có kích thước khác cần xóa bộ nhớ cache của họ (bạn có kiểm soát bộ nhớ cache trên webView vì vậy nó không tệ) nhưng tất cả dữ liệu trước đó sẽ bị mất (trừ khi bạn di chuyển nó sang DB mới theo cách thủ công với mã gốc). Trong trường hợp của tôi, tôi phải làm tương tự nhưng giảm kích thước. Điều đó sẽ giải quyết vấn đề.

Hy vọng điều này sẽ hữu ích.

+0

đây là thứ khác. điều này sẽ không ảnh hưởng đến hạn ngạch được thiết lập bởi hệ điều hành Android. điều này chỉ đặt kích thước của cơ sở dữ liệu hiện có. và tôi chưa thấy điều đó thực sự làm _anything_. trong tất cả các thử nghiệm tôi đã thực hiện kích thước đó chỉ là baloney. Tôi có thể thiết lập một kích thước 10 byte và tôi vẫn có thể điền nó lên đến hạn ngạch vượt quá. Tôi sẽ thêm một câu trả lời ngay bây giờ với nhiều thông tin hơn. – oligofren

+0

Đây là cách thực hiện cho một ứng dụng web thông thường. Tôi không chắc làm thế nào bạn đang làm nó. Nhưng giới hạn thường được thiết lập bởi trình duyệt, đây là cách để cố gắng tạo ra một DB có kích thước thiết lập. – Chepech

+0

Tôi biết đó là cách nó được thực hiện cho một ứng dụng web thông thường. Tôi chỉ nói rằng đối số kích thước không _nothing_. Tôi nên làm điều mong đợi - thiết lập kích thước, nhưng nó dường như bị bỏ qua bởi hầu hết các trình duyệt. kích thước tối đa thực được đặt bởi trình duyệt/chế độ xem. – oligofren