Ich baue eine App, die aus einem Menü und einem Webview besteht. Wenn der Benutzer Menüelemente auswählt, sollte die Webansicht die entsprechende HTML-Datei laden. So weit, ist es gut.So aktivieren Sie die Verfalls-Header-Zwischenspeicherung für die Webansicht
Jetzt erfahre ich, dass die Webansicht den HTML-Code jedes Mal anfordert, wenn ich den Menüeintrag drücke. Ich möchte nur den HTML-Code einmal in einer Sitzung laden, weil die HTML-Dateien nicht während eines Tages geändert werden. Als erstes habe ich den expires-Header auf der Serverseite korrekt gesetzt. Sie können es hier:
http://redbot.org/?uri=http%3A%2F%2Fcutoutcam.com%2Ftest1.php
Dann habe ich versucht
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
und
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
Ergebnisse:
erste Version fordert die html jedes Mal (mit einem überprüft Proxy) -> das ist komisch. Es sollte die zwischengespeicherte Version anzeigen, solange sie nicht abgelaufen ist. was ist das Problem?
zweite Version fordert nie eine neue HTML-Datei (das ist ok, weil es dazu angenommen hat)
Wer hat eine Idee, warum der Header abläuft hier nicht richtig funktioniert?
Der gesamte Code:
mWebView = (WebView) getView().findViewById(R.id.fragment_web_view_wv);
mWebView.setWebViewClient(new WebViewClient(this));
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
android.webkit.WebStorage.QuotaUpdater quotaUpdater)
{
quotaUpdater.updateQuota(spaceNeeded * 2);
}
});
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
String appCachePath = getActivity().getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
mWebView.loadUrl(args.getString("url"));
nein es ist nicht: WebSettings.LOAD_CACHE_ELSE_NETWORK: "Verwenden Sie zwischengespeicherte Ressourcen, wenn sie verfügbar sind, auch wenn sie abgelaufen sind." Ich möchte nur die Ressourcen verwenden, wenn sie nicht abgelaufen sind – stoefln
welche Version von Api verwenden Sie? – Vsevolod
Buildtarget ist API-Ebene 17, minSdk ist 8 – stoefln