正如我在主题中所说,我希望我的WebView能够防止在另一个活动到达前台时或者当方向发生变化时重新加载网页。之所以是因为WebView内容几乎完全是由Javascript / AJAX生成的。在几个论坛上搜索后,我发现许多人建议使用“saveState”和“restoreState”方法,但是当我查看文档时,它说:
请注意,此方法不再恢复此WebView的显示数据。请参阅savePicture(Bundle,File)和restorePicture(Bundle,File)以保存和恢复显示数据。
所以,我在这里使用了savePicture和restorePicture,如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......其他一些行......
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
if (savedInstanceState == null){
loadInicialWebUi();
}else{
mWebView.restoreState(savedInstanceState);
boolean restoredPic = mWebView.restorePicture(savedInstanceState, new File("savedDisplayWebView.temp"));
Log.d(TAG, "restored Picture:" + restoredPic);
}
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
mWebView.saveState(savedInstanceState);
boolean savedPic = mWebView.savePicture(savedInstanceState, "savedDisplayWebView.temp");
Log.d(TAG, "saved Picture:" + savedPic);
super.onSaveInstanceState(savedInstanceState);
}
而且,这些日志显示它可以保存图片,但无法恢复。我怀疑文件引用可能有一些东西,但我想不出更好的方法来获取保存状态时创建的文件的引用。
有人激动吗? 我很感激任何线索/建议。 提前谢谢。
曼努埃尔。
答案 0 :(得分:0)
我会在onCreate()
中加载页面,并将此属性放在清单中的Activity上:
android:configChanges="orientation|keyboardHidden"
这会阻止在方向更改时重新启动活动。由于您的活动在onCreate()
中加载了该页面,因此将另一个活动带到前台不会导致您重新加载该页面。