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