I'm making an Android application that, among other things, shows websites in a webview. As far as I understand, the webview automatically shows a cached version of the page if a connection can't be established.
Is there any way to find out if the page shown has been fetched from the server or cache?
Maybe even how old the cached page is.
This is to be able to notify the user if he/she is viewing old information.
webview cache is saved into /data/data/[your_package_name]/cache/org.
Just after creating your webview, before loading any pages, you can clear the cache. myBrowser. clearCache(true) - the boolean indicates if you wish to delete the cached files on disk as well.
Web View is slower on both as compared to native android browser.
WebView is a view that display web pages inside your application. You can also specify HTML string and can show it inside your application using WebView. WebView makes turns your application to a web application.
You could try a hack - at first set WebView's cache mode to WebSettings.NO_CACHE
and load the URL. Then, create a custom WebChromeClient like this:
final String urlToLoad = "http://www.my-url.com";
webview.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl)
{
if (view.getSettings().getCacheMode() == WebSettings.LOAD_NO_CACHE && urlToLoad.equals(failingUrl))
{
view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
view.loadUrl(urlToLoad);
return;
}
else
if (urlToLoad.equals(failingUrl))
{
// cache failed as well, load a local resource as last resort
// or inform the user
}
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
webview.loadUrl(urlToLoad);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With