gpt4 book ai didi

android - 如何保存和恢复 android WebView 的 WebBackForwardList?

转载 作者:行者123 更新时间:2023-12-04 10:51:04 26 4
gpt4 key购买 nike

我正在尝试使用 WebView 和 android studio 实现一个简单的网络浏览器应用程序。我想将我的 WebView 的状态(例如 WebBackForwardList)保存到内部存储并在我重新启动应用程序时恢复它。我不想只加载上次访问的 url,相反,当我打电话时,我也想加载 goBack()goForward()我的 WebView 的方法我希望它从内部存储中恢复上一个和下一个访问过的链接。

我目前已经实现了我自己的 WebView、WebViewClient 和 WebChromeClient 并将访问的链接作为字符串保存到内部存储中,以便我可以通过调用 loadUrl() 加载它们。在 goBack() 的覆盖方法中和 goForward()在恢复的同时。但这使得页面加载速度比 WebView 自己的要慢 goBack()goForward()方法,也不会恢复滚动位置、缩放等。

所以我有两个问题;

有一种方法可以通过调用 copyBackForwardList() 来获取 WebView 的 WebBackForwardList方法,但是有没有办法设置/编辑 WebBackForwardList?

如果没有,我如何在重新启动应用程序后保存和恢复它?

最佳答案

这不是最好的解决方案,但我为这种情况实现了一种解决方法。简单来说,我将 WebBackForwardList 的项目 URL 从零到当前索引保存到 Stack命名 backStack , 从当前索引加一到最后一个索引到 forwardStack .然后我将这些堆栈和当前项目的 URL 保存到内部存储中。

当应用程序重新启动时,WebView 加载当前项目 URL。当用户想要后退或前进时,我首先检查 WebView 是否可以后退或前进。如果可以,我打电话goBack() WebView 的方法。如果不能,那么我从我保存到内部存储的堆栈中弹出并加载 URL。

但是当从 backStack 加载 URL 时,我不得不将当前 WebBackForwardList 的项目的 URL 推送到 forwardStack并清除 WebView 历史记录。这是必要的,因为 WebView 将最后加载的 URL 保存到 WebBackForwardList 的最后一个索引。这会扭曲 WebBackForwardList,因为我正在加载上一个项目。

它目前工作正常,但正如我所说,这不是最好的解决方案。

关于android - 如何保存和恢复 android WebView 的 WebBackForwardList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com