2012-01-18 15 views
9

我有一个webview使用应用程序缓存。我启动了一个连接到网络的应用程序,以加载/缓存页面。现在,在关闭WiFi(和3G - 无网络连接)并启动应用程序后,我会看到“android无法加载页面”页面。奇怪的是,如果我重新加载webview,它会从缓存中加载页面。如果它无法连接到网络,为什么不从缓存中加载此页面?为什么android webview默认不检查缓存?

我使用的是具有cache.manifest的HTML5应用程序缓存。这里是我的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); 

,但它并没有帮助。

+0

当你关闭wifi和/或3G时,你是否正在查杀应用程序的实例,除非你正在主动检查,否则它不知道从缓存加载,因为它已经从网络加载,这就是为什么当你重新加载它的webview加载正确。 –

+0

@JaredBurrows我不明白你的意思,但流程是这样的:1.从网络加载应用程序。 1A。页面被缓存。 2.杀死应用程序。 3.杀死wifi(设备上没有3G)4.加载应用程序。 4A。页面显示“Android无法加载页面”5.刷新webview。 5A。页面从缓存中正确加载 – xdumaine

+0

你如何刷新网页视图? –

回答

0

检查您请求的URL是否不是重定向。如果是,则缓存也将指向该重定向,并且WebView将不会从缓存读取结果重定向。

我花了一些时间才弄清楚这是我的情况。