应用关闭时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中的cookie?