在普通的 Android Web 应用程序中,WebSQL 数据库的最大大小通常约为 8MB。在我正在制作的混合网络应用程序中,我想增加这个限制。我该怎么做呢?
似乎WebStorage可能与它有关,但我在那里看到的唯一似乎设置大小的方法setQuotaForOrigin
被标记为deprecated。
欢迎使用示例代码(不推荐使用):)
在普通的 Android Web 应用程序中,WebSQL 数据库的最大大小通常约为 8MB。在我正在制作的混合网络应用程序中,我想增加这个限制。我该怎么做呢?
似乎WebStorage可能与它有关,但我在那里看到的唯一似乎设置大小的方法setQuotaForOrigin
被标记为deprecated。
欢迎使用示例代码(不推荐使用):)
Web 应用程序的配额似乎与混合应用程序的配额不同(就像在视图中运行的东西一样)。无论如何,通过在您的子类中实现以下内容,您android.app.Activity
将加倍配额,直到最终停止在大约 48MB。
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 2);
}
发生这种情况时,不会要求用户进行交互。
您可能想查看有关如何增加配额限制的其他问题。
看起来更改大小只是对于已经创建本地数据库的用户来说是一个问题,这是因为在运行版本控制升级脚本时无法更改数据库的大小。也就是说,您只需要更改初始化脚本中的大小(JavaScript 中的代码):
var size = 10 * 1024 * 1024; // changed from 5 to 10MB
var db = openDatabase("oversized_db", "v1.1", "Ten MB DB", size);
考虑到这只会影响新用户。之前创建了不同大小的数据库的所有用户都需要清除他们的缓存(您可以控制 webView 上的缓存,所以它不是那么糟糕)但是所有以前的数据都会丢失(除非您手动将其迁移到新数据库使用本机代码)。就我而言,我必须做同样的事情,但要减小尺寸。那会解决这个问题。
希望这可以帮助。