2011-10-04 151 views
2

我的问题涉及许多关于方向更改后处理WebView的问题。Android WebView恢复状态冻结

我知道活动并没有被销毁,所以我使用onSaveInstanceState()来保存它的状态,然后用restoreState()恢复它。

而这在大多数情况下正常工作。但是,当我更改方向太快时 - 不是在从不同布局返回后立即开始活动或创建WebView对象后立即更改方向。调试显示我的WebView状态得到保存(并且所有对象已经在方向改变发生时被创建和准备)并且它试图恢复状态,但不知何故它不能。没有任何类型的错误,但页面从不加载,我看到无限的白色屏幕。调用WebView.reload()也没有帮助。

任何想法为什么发生这种情况?正如我所说的,所有对象都是在方向更改时创建的,并且loadUrl()方法被调用,所以应该正确保存状态。

回答

1

检查您的WebView软件包。如果它是EMPTY,那么不要恢复状态。

if (!bundleObject.isEmpty()) { 
    mWebView.restoreState(bundleObject); 

}

+0

是的,这是一个正确的答案!我只检查是否(bundleObject!= null),它不够。 isEmpty()函数可以做到这一点。 或者我只是发现你可以这样做: WebBackForwardList retval = myWebView.restoreState(bundleObject);并检查retval是否不为空。 – Krzychu