在清除数据之前,WebView不会反映服务器上的更改

时间:2015-02-04 17:14:47

标签: android-webview android-websettings

我发现了一个我无法复制的有趣错误,但认为这里有人可以提供一些见解。

我有一项活动,目前部分原生,部分基于网络。我的意思是,一个元素只是一个WebView,直到可以实现本机级别的实现。

当我在加载的页面中进行更改时,我发现在移动界面中使用Chrome开发者工具立即进行了更改。但是,我无法立即在MainApp中看到我的WebView中的更改。作为测试,我安装了一个新的应用程序,在WebView中加载页面,我看到了更改。在我的MainApp中清除数据后,我能够看到所述更改。

我做了一些更改,但现在这些更改立即反映在我的WebView中(退出活动并重新进入)。

这些是我的WebView设置,你能看到我最初没有看到这些变化的原因吗?我在处理数据如何存储在WebView中并且想要确保我对我的网页所做的更新立即反映在应用程序中时,我不是很精明(还是:))。谢谢!

// Initialize WebView
    if (Build.VERSION.SDK_INT >= 19)
        mWebView.setWebContentsDebuggingEnabled(false);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            // Hide ProgressBar
            mProgressBar.setVisibility(View.GONE);
        }
    });
    final ActionBarActivity activity = this;
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
            // Activities and WebViews measure progress with different scales.
            // The progress meter will automatically disappear when we reach 100%
            mProgressBar.setProgress(progress);
        }
    });

    // Settings for WebView data
    WebSettings ws = mWebView.getSettings();
    ws.setSaveFormData(false);
    ws.setSavePassword(false); // Not needed for API level 18 or greater (deprecated)

2 个答案:

答案 0 :(得分:1)

您可能需要为webview禁用缓存。数据更改后,您需要使用mWebView.reload()

重新加载网页视图

答案 1 :(得分:0)

如果您想在每次重新打开时重新加载 webview。

将此设置用于 webview

webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

这不会加载缓存并且需求会得到满足。