android webview没有缓存整个cache.manifest文件

时间:2013-06-07 14:15:38

标签: android html5 caching webview manifest

我有一个加载网页的应用程序,它可以在线运行。 我已经在我的页面中添加了一个cache.manifest文件,这在我的Android手机上使用浏览器时,以及在桌面上测试时似乎都很完美。

打开应用程序时,我打开几页,它们会被缓存。

之后,我禁用所有Wifi& 3G连接,并重新打开应用程序。此时,我可以显示之前打开的页面,但是我没有打开的页面会给出错误:“网页不可用”。

所以这意味着完成了一些缓存,但是webviewclient实际上并没有缓存我在cache.manifest文件中显示的所有内容。

可以在此处找到示例页面:http://www.mobileevolution.be/apps/FitceCongress/android/gsm/home.php

清单包含以下信息:

CACHE MANIFEST
# 30-05-2013 20h11 1152gg2dfdfdfd

CACHE:
committees.php
congressprogram.php
home.php
../../congressprogram.xml
../../partnerprogram.xml
information.php
partnerprogram.php
sponsors.php
style/style.css
registration.php
http://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900
http://themes.googleusercontent.com/static/fonts/roboto/v8/Hgo13k-tfSpn0qi1SFdUfT8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/2UX7WLTfW3W8TclTUvlFyQ.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/RxZJdnzeo3R5zSexge8UUT8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/d-6IYplOFocCacKzxwXSOD8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/mnpfi9pxYH-Go5UiibESIj8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/Hgo13k-tfSpn0qi1SFdUffY6323mHUZFJMgTvxaG2iE.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/5YB-ifwqHP20Yn46l_BDhA.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/RxZJdnzeo3R5zSexge8UUfY6323mHUZFJMgTvxaG2iE.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/d-6IYplOFocCacKzxwXSOPY6323mHUZFJMgTvxaG2iE.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/mnpfi9pxYH-Go5UiibESIvY6323mHUZFJMgTvxaG2iE.eot

根据此论坛上的其他主题,Android中的缓存设置似乎是正确的:

webView1.getSettings().setJavaScriptEnabled(true); // enable javascript

cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
        if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()){
            webView1.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        }
        else{
            webView1.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
        }

        webView1.getSettings().setDomStorageEnabled(true);
        webView1.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);

        String appCachePath = getApplicationContext().getCacheDir()
                .getAbsolutePath();

        webView1.getSettings().setAppCachePath("/data/data/be.mobileevolution.fitcecongress/cache");
        //webView1.getSettings().setAppCachePath(appCachePath);
        webView1.getSettings().setAllowFileAccess(true);
        webView1.getSettings().setAppCacheEnabled(true);

我正在创建这样的webviewclient:

webView1.setWebViewClient(new WebViewClient(){ 

我认为以下主题与我的问题相同,但没有给出真正的答案:Webview not loading offline cached data

有没有人澄清为什么cache.manifest中的所有文件都没有在应用程序上下载?或者也许cache.manifest在webview中根本不起作用,缓存是由应用程序本地完成的?但是在浏览器中它可以正常工作!

谢谢, GRTS, 拉斯

1 个答案:

答案 0 :(得分:0)

您的HTML5应用中是否有例程可以在下线前下载所有网页和数据?

var appCache = window.applicationCache; appCache.update();

此外 - 无论我是在线还是离线,WebSettings.LOAD_DEFAULT都适用于我。