6

正如我在主题中所说,我希望我的 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);
}

好吧,这些日志显示它保存了图片,但无法恢复它。我怀疑文件引用可能存在一些问题,但我想不出更好的方法来获取保存状态时创建的文件的引用。

有没有人心动?我将不胜感激任何线索/建议。提前致谢。

曼努埃尔。

4

1 回答 1

0

我将加载页面onCreate()并将此属性放在清单中的 Activity 上:

android:configChanges="orientation|keyboardHidden"

这将防止您的活动在方向更改时重新启动。而且由于您的 Activity 在 中加载页面onCreate(),因此将另一个 Activity 带到前台不会导致您重新加载页面。

于 2010-11-18T17:29:22.357 回答