【发布时间】:2012-02-13 14:44:15
【问题描述】:
我有一个使用应用程序缓存的 webview。我启动了连接到网络的应用程序以加载/缓存页面。现在,在关闭 wifi(和 3g - 无网络连接)并启动应用程序后,我会看到“android 无法加载页面”页面。奇怪的是,如果我然后重新加载 webview,它会从缓存中加载页面。连接不上网络为什么不从缓存中加载这个页面?
我正在使用 HTML5 应用程序缓存和 cache.manifest。这是我启用此功能的 webview 代码:
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setAppCacheMaxSize(1024*1024*8);
webview.getSettings().setAppCachePath("/data/data/com.my.package/cache");
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setAppCacheEnabled(true);
我尝试添加:
weview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
但它没有帮助。
【问题讨论】:
-
当您关闭 wifi 和/或 3g 时,您现在是否正在杀死应用程序的实例,除非您正在积极检查,否则它不会知道从缓存中加载,因为它已经从网络加载,这这就是为什么当你重新加载 webview 时它会正确加载。
-
@JaredBurrows 我不明白你的意思,但流程是这样的: 1. 从网络加载应用程序。 1a。页面被缓存。 2.杀死应用程序。 3.杀死wifi(设备上没有3g)4.加载应用程序。 4a。页面显示“Android 无法加载页面” 5. 刷新 webview。 5a。页面从缓存正确加载
-
如何刷新网页视图?
-
只需一个按钮再次调用
loadUrl。这实际上与onCreate中的调用相同。 -
您可以随时检查网络连接然后重新加载,还是在实例被杀死后简单地在 onResume 中重新加载?
标签: android caching android-webview