我一直在研究一個應用程序,從網上緩存圖像,甚至當用戶離線時顯示它。這個工作很好,直到Android 4.4出來。現在,我看到的只是一個「無法加載網頁」錯誤。我想這可能需要做一些事實,Kitkat使用Chromium來加載webviews,但我不太確定。任何修補程序?WebView緩存不工作在Android 4.4
這裏是我的代碼:
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);
我使用下面的代碼加載它:
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();
}
你是否總是看到錯誤(在哪種情況下 - 你想要加載什麼?)或者你只能在脫機模式下看到它? 也 - 無關,但你爲什麼設置圖層類型爲軟件?這通常會導致不良的滾動性能。 –
僅當互聯網連接關閉時纔會發生錯誤。並感謝您的建議,將嘗試看到不同之處。 – rahulritesh
查看Android 4.4的更改http://developer.android.com/about/versions/android-4.4.html#Behaviors –