WebView的restorePicture方法 - 阻止webview重新加载页面

mde*_*lmo 6 android webview android-webview

正如我在主题中所说,我希望我的WebView可以防止在另一个活动到达前台时或者当方向发生变化时重新加载网页.之所以是因为WebView内容几乎完全是由Javascript/AJAX生成的.在几个论坛上搜索后,我发现许多人建议使用"saveState"和"restoreState"方法,但是当我查看文档时,它说:

请注意,此方法不再恢复此WebView的显示数据.请参阅savePicture(Bundle,File)和restorePicture(Bundle,File)以保存和恢复显示数据.

所以,我在这里使用了savePicture和restorePicture,如下所示:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)

......其他一些线......

        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);
}
Run Code Online (Sandbox Code Playgroud)

而且,这些日志显示它可以保存图片,但无法恢复.我怀疑文件引用可能有一些东西,但我想不出更好的方法来获取保存状态时创建的文件的引用.

有人激动吗?我很感激任何线索/建议.提前致谢.

曼努埃尔.

Rya*_*ves 0

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

android:configChanges="orientation|keyboardHidden"
Run Code Online (Sandbox Code Playgroud)

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