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

问题描述 投票:0回答:1

我正在尝试使用带有Android Studio的WebView来实现一个简单的Web浏览器应用程序。我想将WebView的状态(例如WebBackForwardList)保存到内部存储中,然后在重新启动该应用程序时将其还原。我不想只加载上次访问的URL,相反,我还希望当我调用WebView的goBack()goForward()方法时,我希望它从内部存储中恢复上一个和下一个访问的链接。

我目前已经实现了自己的WebView,WebViewClient和WebChromeClient,并将访问的链接保存为字符串存储到内部存储中,因此我可以在还原时通过在loadUrl()goBack()的重写方法中调用goForward()来加载它们。但这使页面的加载比WebView自己的goBack()goForward()方法慢,并且它也无法恢复滚动位置,缩放等。

所以我有两个问题;

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

如果没有,重新启动应用程序后如何保存和还原它?

我正在尝试使用带有Android Studio的WebView来实现一个简单的Web浏览器应用程序。我想将WebView的状态(例如WebBackForwardList)保存到内部存储中,并在重新启动...

android webview android-webview
1个回答
0
投票

这不是最佳解决方案,但是我针对这种情况实施了变通方法。简而言之,我将WebBackForwardList的项目URL从零保存到当前索引,再保存到名为StackbackStack,从当前索引加最后一个索引到forwardStack。然后,我将这些堆栈和当前项目的URL保存到内部存储中。重新启动应用程序后,WebView会加载当前的项目URL。当用户想要前进或后退时,我首先检查WebView是否可以前进或后退。如果可以,请调用WebView的I goBack()方法。如果不能,则从保存到内部存储器的堆栈中弹出并加载URL。

© www.soinside.com 2019 - 2024. All rights reserved.