应用关闭时Android WebView保存显示状态

Posted

技术标签:

【中文标题】应用关闭时Android WebView保存显示状态【英文标题】:Android WebView Save Display State when app closes 【发布时间】:2021-03-16 22:32:17 【问题描述】:

我希望能够在用户关闭我的应用程序时保存 WebView 的状态,并能够将其恢复到用户返回应用程序时的状态。我希望它恢复带有表单的网站、存储计算历史的在线计算器或任何动态生成 javascript 对象的网站。我怎样才能做到这一点? 以下是我尝试过的一些方法。

我已尝试使用 here 找到的 saveState 方法,但行为已更改。

请注意,此方法不再存储此 WebView 的显示数据。

我希望能够恢复显示数据。

我尝试了 saveWebArchive 方法here,但是在保存和恢复网络存档版本时,它并没有将显示数据恢复到原来的样子。

我无法使用任何 html5 存储方法或 evaluateJavascript 来处理此问题,因为我希望能够保存和恢复我访问的任何网站的状态。

【问题讨论】:

嗨,我在想“用户关闭我的应用程序”,这是否意味着应用程序完全关闭了应用程序管理器(方形或概览按钮)?如果是,我认为这是不可能的,因为 webview 在应用程序关闭时被销毁。 您好,“关闭我的应用程序”是指应用程序进入后台,.因此,当您返回应用程序时,将调用 onResume 方法而不是 onCreate。所以把你的代码放在 OnResume 上。 ***.com/questions/18479519/… ...您将如何使用 Chrome 或 Puppeteer 执行此操作?此外,该概念并未考虑到表单或访问令牌可能早已在服务器端超时。 【参考方案1】:

将应用程序发送到后台时,只需加载一次URL即可:

@Override
public void onCreate(Bundle savedInstanceState) 
    if (savedInstanceState == null) 
        webView.loadUrl(defaultUrl);
    

但在终止应用程序时,恢复能力相当有限。

【讨论】:

【参考方案2】:

您可以在自定义 WebView 中使用此代码:

override fun onWindowVisibilityChanged(visibility: Int) 
        if (visibility != View.GONE) super.onWindowVisibilityChanged(View.VISIBLE)
 

【讨论】:

以上是关于应用关闭时Android WebView保存显示状态的主要内容,如果未能解决你的问题,请参考以下文章

在android上加载webview后没有显示插页式广告?

如何永久保存Android webview中的cookie?

如何在 Webview 中保存用户名和密码

关闭全屏视图后的Android WebView Video,webview自动滚动

保存/恢复android webview的状态

在android webview应用程序的页面上单击链接时如何防止显示加载微调器?