Android webView saveState

Ukj*_*ent 18 android save webview

我有一个带有3个标签的tabhost.在每个选项卡中都有一个webiview.当我点击一个标签时,webview需要"重新加载",即使我曾经去过那里,它还没有被保存.有没有办法保存webview?

Sha*_*wal 40

这可以通过覆盖活动中的onSaveInstanceState(Bundle outState)并从webview调用saveState来处理:

@Override
protected void onSaveInstanceState(Bundle outState) {
    webView.saveState(outState);
    super.onSaveInstanceState(outState); 
}
Run Code Online (Sandbox Code Playgroud)

然后在webview重新充气之后在你的onCreate中恢复它:

@Override
public void onCreate(final Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.blah);
   WebView webview = (WebView)findViewById(R.id.webview);
   if (savedInstanceState != null)
      webview.restoreState(savedInstanceState);
   else
      webview.loadUrl(URLData)
}
Run Code Online (Sandbox Code Playgroud)


e4c*_*4c5 12

restoreState永远不可靠.到2015年,文件接受了这一事实.(可能是对2014年左右的文件进行了更改).这就是它现在所说的.

如果在此WebView有机会构建状态(加载页面,创建后退/前进列表等)之后调用它,则可能存在不良副作用.请注意,此方法不再恢复此WebView的显示数据.

而saveState()的相应条目则说明如下:

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

你应该在onCreate方法中真正做的是调用webView.loadUrl()如果你想显示最后访问过的url,请看这个答案:

如果您担心webview重新加载方向更改等.

您可以将Activity设置为处理方向和keyboardHidden更改,然后单独保留WebView