Перерыл много тем, так и не нашел ответа на свой вопрос. Я работаю над приложением Android
, которое использует WebView
.
Я использую onSaveInstanceState()
и onRestoreInstanceState()
для сохранения состояния WebView
следующим образом:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
webView.saveState(savedInstanceState);
}
а также
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
webView.restoreState(savedInstanceState);
}
У меня также есть это в моем onCreate()
:
public void onCreate(Bundle savedInstanceState) {
... other code ...
if(savedInstanceState != null){
webView.saveState(savedInstanceState);
}else{
webView.loadUrl("http://mypage");
}
}
Проблема: кажется, что восстановление WebView
вообще не восстанавливает Javascript
переменных/окружения/рабочей области. Когда приложение уничтожается в фоновом режиме, а затем восстанавливается, весь Javascript исчезает со всеми объектами/переменными. Код javascript имеет пространство имен, то есть window.utilitiesPack
, window.eventHandlers
, window.automation
и т. д., и они не определены. Также используются JQuery
и другие плагины javascript: все они кажутся неопределенными после состояния восстановления. В основном весь Javascript не восстанавливается.
Может ли кто-нибудь подтвердить или опровергнуть, что это так на самом деле (Javascript не сохранен)? Если все рабочее пространство Javascript не сохраняется, то что именно сохраняет WebView.saveState()
? Есть ли простой/элегантный способ использовать существующий API для сохранения объектов Javascript?
//======================================================
Update1: Проблема остается. Самая существенная трудность заключается в следующем:
Запускаю Камеру Intent
на результат. Когда снимок сделан, приложение возвращается к WebView
активности и должно использовать Javascript для обновления HTML5 LocalStorage
некоторыми переменными данных.
Основное действие с WebView
уничтожается, пока отображается действие камеры, поэтому, когда мы возвращаемся к WebView, больше нет Javascript и функций, которые я могу вызывать из кода Android. Это происходит каждый раз Galaxy S3
. Это все еще происходит на других телефонах, но не каждый раз при фотографировании.
Не знаю, что здесь делать. Каким-то образом я должен сделать основное действие с WebView, чтобы сохранить состояние, пока изображение делается с намерением камеры. Кто-нибудь знает, как этого можно достичь?
WebBackForwardList
.) - person millimoose   schedule 27.02.2013WebBackForwardList
на самом деле сохраняет материал Javascript? - person user2113581   schedule 27.02.2013