繁体   English   中英

Webview页面保存状态

[英]Webview saving state of page

我正在使用的Webview有一个小问题。 我正在尝试使用Webview允许用户填写注册表格。 当用户在一个会话中完成表单,但如果用户锁定手机,则Webview活动将被销毁,这可以很好地工作。

我在内存中有两项活动,其中一项活动占用大量内存。 我认为我遇到的问题是,由于此其他活动所需的内存比webview更多,因此webview被破坏。

我在一定程度上对此表示满意,但我真的很希望能够保存网页的当前状态,以便用户不必再次提交其所有详细信息。 无论如何,我可以做到这一点。

谢谢

试试看:-您可以使用WebView方法saveState()/ restoreState()并将其保存到活动onRestore包中,如果先前的活动将被销毁,请在onCreate方法中使用保存的值。 您可以使用此处描述的类似方法(但仅用于配置更改): http : //www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-屏幕方向变化/

我们遇到了类似的问题。 我们有一个带有网络视图的活动。
我们希望用户在Web视图中的表单上输入3个字段,然后启动一个新的活动(相机)来拍照。 当我们取回图片并使用javascript时,我们将图片插入到当前活动的Webview表单中。 99.9%的时间都可以正常运行。 但是,在某些难以重现的奇特场景中,当摄像机活动处于活动状态时,其背后的Webview活动会被破坏。 saveState / restoreState仅部分还原Web视图。 现在,当我们启动相机时,用户已输入但未提交的3个表单字段将丢失。 它们不会通过webview.saveState保存。 此外,页面上的某些javascript状态也会丢失。

要解决此问题,我们在页面上添加了一个javascript方法,并在saveInstanceState上的应用程序中调用了它。 然后,在恢复状态之后,我们在webview页面上调用另一个javascript方法将状态放回原处。 这是一件很痛苦的事情,但是需要为您要做的每种表格工作,但它确实有效。

我希望Android webview.saveState的将来版本可以完全保存该活动之前的状态。 另外,如果您将一项活动标记为对您的应用程序很重要,并且仅当您的应用程序不是该用户正在使用的当前应用程序时,才允许销毁该活动,那就太好了。

尝试使用WebView.addJavascriptInterface,当Activity.onPause时,通过loadUrl(“ javascript:...”)在页面中调用javascript方法,然后在网页中,调用由WebView.addJavascriptInterface提供的本机方法以保存数据。 这是你想要的吗?

按下返回键可以破坏活动。 屏幕旋转时(更快地销毁活动并重新创建所有图形元素); 或有可能在短时间内无法激活(锁定手机,按主屏幕键或启动其他应用程序)。

您需要执行@Ixx在他的评论中建议的操作: Android webView saveState

用类似的方法保存应用程序的数据

@Override
public void onSaveInstanceState(Bundle outState) {          
    super.onSaveInstanceState(outState);   
    /// save your things, e.g.
    outState.putString("name", name);
}

并在onCreate方法中恢复它的存在

@Override
public void onCreate(Bundle savedInstanceState) {       
    super.onCreate(savedInstanceState);
    // if it is a new activity
    if (savedInstanceState == null) {
        // initialize vars, e.g.
        name = "Unknown";
    }
    // if is a call after detroy the activity
    else {
        // recover vars, e.g.
        name = savedInstanceState.getString("name");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM