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

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

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

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

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

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

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

【问题讨论】:

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

标签: javascript android webview save android-webview


【解决方案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)
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 2012-05-24
      • 2011-07-23
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多