gpt4 book ai didi

android - WebView 缓存在 Android 4.4 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:27 25 4
gpt4 key购买 nike

我一直在开发一个应用程序,它可以缓存来自网络的图像并在用户离线时显示它。在 Android 4.4 发布之前,这种方法运行良好。现在,我看到的只是“无法加载网页”错误。我想这可能与 Kitkat 使用 Chromium 加载 web View 这一事实有关,但我不太确定。对此有任何修复吗?

这是我的代码:

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();

}

最佳答案

我自己解决了。我发现 Chromium 不会缓存大小大于 1 MB 的图像。在其他情况下,它工作得很好。目前已将此事报告给 Google。

关于android - WebView 缓存在 Android 4.4 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20193851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com