Ich habe an einer Anwendung gearbeitet, die ein Bild aus dem Internet zwischenspeichert und es zeigt, auch wenn der Benutzer offline ist. Das funktionierte ziemlich gut, bis Android 4.4 herauskam. Nun, alles, was ich sehe, ist ein Fehler "Kann die Webseite nicht laden". Ich nehme an, es könnte etwas damit zu tun haben, dass Kitkat Chromium zum Laden von Webansichten verwendet, aber ich bin mir nicht sicher. Irgendwelche Korrekturen dafür?WebView Cache funktioniert nicht in Android 4.4
Hier ist mein Code:
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
mWebView.setWebViewClient(new MyWebViewClient());
mWebViewSettings = mWebView.getSettings();
mWebViewSettings.setJavaScriptEnabled(true);
mWebViewSettings.setAllowFileAccess(true);
mWebViewSettings.setAppCacheEnabled(true);
if (Build.VERSION.SDK_INT < 18)
mWebViewSettings.setAppCacheMaxSize(5 * 1024 * 1024); // 5MB
mWebViewSettings.setLoadsImagesAutomatically(true);
mWebViewSettings.setAppCachePath(getActivity().getApplicationContext()
.getCacheDir().getAbsolutePath());
mWebViewSettings.setBuiltInZoomControls(true);
if(Build.VERSION.SDK_INT<=18)
mWebViewSettings.setDefaultZoom((WebSettings.ZoomDensity.FAR));
mWebViewSettings.setUseWideViewPort(true);
mWebViewSettings.setLoadWithOverviewMode(true);
ich es bin Laden mit dem folgenden Code:
if (NetworkUtil.IS_ONLINE_WITH_DATA_CONNECTION) {
MyPrefs = getActivity().getSharedPreferences(
"AHSelectionPreffs",
Context.MODE_PRIVATE);
Date CAMPUS_MAP_LAST_UPDATE_DATE = new Date();
String CAMPUS_MAP_LAST_UPDATE_DATE_STRING = MyPrefs
.getString("CAMPUS_MAP" + String.valueOf(StorageHelper.ID), null);
SimpleDateFormat simpleDateFormatter = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
if (CAMPUS_MAP_LAST_UPDATE_DATE_STRING != null) {
try {
CAMPUS_MAP_LAST_UPDATE_DATE = simpleDateFormatter
.parse(CAMPUS_MAP_LAST_UPDATE_DATE_STRING);
} catch (ParseException e1) {
e1.printStackTrace();
System.out.println("Cant format date!!!!");
}
int n = (int) ((curDate.getTime() - CAMPUS_MAP_LAST_UPDATE_DATE
.getTime())/(1000 * 60 * 60));
if (n < 24 * UPDATE_DURATION_IN_DAYS) {
mWebView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
} else {
updateCampusMapData();
}
} else {
updateCampusMapData();
}
} else {
mWebView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
if (StorageHelper.campus_map_link.Mobile_Link_URL != null) {
mWebView.loadUrl(StorageHelper.campus_map_link.Mobile_Link_URL);
}
private void updateCampusMapData() {
mWebView.getSettings().setCacheMode(
WebSettings.LOAD_NO_CACHE);
MyPrefs = getActivity().getSharedPreferences(
"AHSelectionPreffs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = MyPrefs.edit();
editor.putString("CAMPUS_MAP" + String.valueOf(StorageHelper.ID),
curDate.toString());
editor.commit();
}
Sie sehen immer den Fehler (in welchem Fall - was möchten Sie laden?) Oder sehen Sie es nur im Offline-Modus? Auch - unabhängig, aber warum setzen Sie den Layer-Typ auf Software? Dies führt normalerweise zu einer schlechten Scroll-Perf. –
Der Fehler tritt nur auf, wenn die Internetverbindung ausgeschaltet ist. Und danke für den Rat, werde versuchen, den Unterschied zu sehen. – rahulritesh
Werfen Sie einen Blick auf die Änderungen für Android 4.4 http://developer.android.com/about/versions/android-4.4.html#Behaviors –