0

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

我有一项活动,目前部分是本地的,部分是基于网络的。我的意思是一个元素只是一个 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)
4

2 回答 2

1

您可能需要禁用 webview 的缓存。当您的数据更改时,您需要使用重新加载 webviewmWebView.reload()

于 2015-02-05T12:41:29.770 回答
0

如果您想在每次重新打开时重新加载 web 视图。

将此设置用于 webview

webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

这不会加载缓存,并且会满足要求。

于 2020-12-29T11:33:36.213 回答