Android - Обеспечение сохранности Webview DomStorage после закрытия приложения - PullRequest
23 голосов
/ 11 ноября 2010

Я столкнулся с огромной проблемой при разработке приложения для Android, в котором для отображения данных используется Webview.Веб-сайт, который я использую в веб-представлении, использует API-интерфейс localStorage HTML 5.

Чтобы включить эту функцию, я установил настройку веб-просмотра следующим образом:

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

Так что API localStorage работаетно когда я закрываю приложение (и убиваю процесс), localStorage полностью стирается, и когда я перезагружаю его, все мои данные теряются.

Мой вопрос прост: как сделать DomStorage Webview персистентным, даже когдамы закрываем приложение?

Спасибо за все ваши будущие ответы.

Ответы [ 5 ]

10 голосов
/ 29 марта 2011

Вы установили DatabasePath?Android не знает, где сохранить базу данных DOMD по умолчанию, если вы не установите ее, вызывая

webview.getSettings().setDatabasePath()
9 голосов
/ 02 мая 2011
// 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/");
6 голосов
/ 14 июня 2012

Вы должны включить базу данных, а также указать ее путь:

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

Первая строка меня довольно долго ловила ...

0 голосов
/ 28 октября 2013

В этой проблеме ответили с обновлением для Android v4.1.1.

0 голосов
/ 02 июля 2013

В вышеприведенном посте смешаны два разных понятия:

Чтобы данные сохранялись после закрытия сеанса, убедитесь, что вы не используете (в своем 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 (true);

...