【发布时间】:2013-02-27 02:28:33
【问题描述】:
我搜索了很多主题,但仍然找不到我的问题的答案。我正在开发一个使用WebView 的Android 应用程序。
我使用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 的主Activity 在显示Camera Activity 时被杀死,所以当我们回到WebView 时,不再有Javascript,也没有我可以从Android 代码调用的函数。这在Galaxy S3 上每次都会发生。它仍然发生在其他手机上,但并非每次都在拍照时发生。
不知道在这里做什么。不知何故,我必须使用 WebView 制作主 Activity 以在使用 Camera Intent 拍摄图片时保留状态。有谁知道如何实现这一点?
【问题讨论】:
-
“有人可以确认或反驳它的真实情况吗” - 您不是只是通过尝试确认了这一点并看到确实发生了什么吗?
-
(文档似乎暗示保存的是
WebBackForwardList。) -
“您不是只是通过尝试确认了这一点,然后看到确实会发生这种情况吗?”我简直不敢相信整个 Javascript 都没有保存。我希望我不理解某些东西,因为如果是这样的话,这对于使用具有复杂 javascript 功能的网页的应用程序来说就是一个限制。
-
我理解对了吗:
WebBackForwardList实际上保存了 Javascript 的东西? -
嘿@user2113581,这是更多人遇到的问题。您能否为自己的问题写一个解决方案,而不是您在下面留下的评论?
标签: javascript android variables webview savestate