My scenario is initially I am loading a WebView and later on I am loading the same WebView with a different URL.
My problem is whenever I am loading the next URL I c
use mweb.clearView();
before loading the new URL.
Edit:
clearView() was deprecated in API level 18. Use WebView.loadUrl("about:blank")
to reliably reset the view state and release page resources (including any running JavaScript).
to solve the issue raised by @Liang:
To have a consistent back navigation, you can override "onPageFinished", and inside it check whether the url contains "about:blank" or not. if yes, use "webview.goBack()"
It seems to set the layer type of webview as "software" can resolve the problem. Perhaps the previous contents are caused by drawing cache.
Create a string with the HTML for a blank page and load that into the webview. Or hide it until it is loaded.
use following statement before loadData [Kuldip Bairagi]
view.loadUrl("javascript:document.open();document.close();");
I guess you can use Webview.clearHistory()
. But remember so impotent to call this after WebView is loaded. For example the code:
webView.loadData(someUrl);
webView.clearHistory();
won't work because webView is not loaded. We have to clear it like:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
clearHistory();
}
}
I usually hide the webview before loading the new url, and then show it again when the loading progress has advanced a bit.
// url loading
mWebView.setVisibility(View.INVISIBLE);
mWebView.loadUrl(newUrl);
// show webview again
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
if (progress >= 10) {
mWebView.setVisibility(View.VISIBLE);
}
}
}