Android - 在应用程序关闭后使Webview DomStorage持久化

时间:2010-11-11 17:19:06

标签: android webview local-storage persistent

我在开发一个使用Webview显示数据的Android应用程序时面临着巨大的问题。我在webview中使用的网站使用HTML 5的localStorage API。

要启用此功能,我已将webview设置设置如下:

webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);

所以localStorage API可以运行,但是当我关闭应用程序(并终止进程)时,localStorage会被完全删除,当我重新加载它时,我的所有数据都会丢失。

我的问题很简单:即使关闭应用程序,如何使Web视图的DomStorage持续存在?

感谢您将来的所有答案。

5 个答案:

答案 0 :(得分:10)

您是否设置了DatabasePath?如果您没有设置调用

,Android默认情况下不知道在哪里保存DOMDatabase
webview.getSettings().setDatabasePath()

答案 1 :(得分:9)

// Confimed on android 2.1 emulator
// enable javascript localStorage

WebSettings webSettings = myWebView.getSettings();
webSettings.setDomStorageEnabled(true);   // localStorage

// e.g., if your package is www.myapp.whatever;
webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/");

答案 2 :(得分:6)

您必须启用数据库并设置其路径:

webview.getSettings().setDatabaseEnabled(true);
webview.getSettings().setDatabasePath();
webSettings.setDomStorageEnabled(true);

第一行让我感到很长一段时间......

答案 3 :(得分:0)

以上帖子混合了两个不同的概念:

要在会话关闭后使数据保持不变,请确保您没有使用(在您的javascript上)sessionStorage

DOMStorage和数据库存储是两回事。数据库存储不是HTML5的一部分:http://www.tutorialspoint.com/html5/html5_web_sql.htm

DOMStorage与HTML5更相关,并且包括会话存储,当您关闭浏览器时,会话存储将会消失。通过搜索“DOM存储”的“本地存储”,你会发现更多的点击。

http://viralpatel.net/blogs/introduction-html5-domstorage-api-example/

因此,要启用DOMstorage,您只需要: webSettings.setDomStorageEnabled(真);

答案 4 :(得分:0)

此问题的回答为in this post,其中包含Android v4.1.1的更新。