我已经搜索了很多线程,但仍然找不到我的问题的答案。我正在开发一个Android
使用WebView
.
我使用onSaveInstanceState()
andonRestoreInstanceState()
来保存这样的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
活动,并应该使用 JavascriptLocalStorage
使用一些数据变量更新 HTML5。
在显示 Camera Activity 时,主 ActivityWebView
被杀死,所以当我们回到 WebView 时,不再有 Javascript,也没有我可以从 Android 代码调用的函数。每次都会发生这种情况Galaxy S3
。它仍然发生在其他手机上,但并非每次都在拍照时发生。
不知道在这里做什么。不知何故,我必须使用 WebView 制作主 Activity,以在使用 Camera Intent 拍摄照片时保留状态。有谁知道如何实现这一目标?