HTML5 Android Phonegap Web应用程序无法使用缓存清单脱机工作

Eti*_*gné 7 html5 android cache-manifest cordova

我有一个使用Phonegap和Android构建的简单Web应用程序,它从服务器调用外部资源(js,css,html),而不是将其存储在Phonegap资产文件夹中.我更喜欢使用外部资源,因为我的服务器可以提供负责国际化的html页面.

当WIFI打开时,这个网络应用程序在我的Android设备上正常工作,但在停止WIFI时失败.我的服务器提供的index.html文件包含一个有效的清单文件,其中包含正确的mimetype('text/cache-manifest'),列出了应用程序需要工作的每个文件.

我的Android Activity类应该启用缓存:

    this.appView.getSettings().setDomStorageEnabled(true);
    this.appView.getSettings().setAppCacheMaxSize(1024 * 1024 * 15);  

    String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
    this.appView.getSettings().setAppCachePath(appCachePath);
    this.appView.getSettings().setAllowFileAccess(true);
    this.appView.getSettings().setAppCacheEnabled(true);
Run Code Online (Sandbox Code Playgroud)

值得一提的是,我的应用程序使用ajax调用与/ aaa/bbb /等网址从服务器调用网页,我不知道这可能是问题(我不直接调用物理页面像index.html) ...但是,这个网络应用程序在离线时在桌面浏览器(谷歌浏览器)中运行良好...

知道我还可以做些什么来在我的Phonegap应用程序上启用此HTML5缓存功能?

非常感谢

Eti*_*gné 6

玩了一会儿后我就开始工作了.在遇到这种类型的缓存问题时,您应该验证以下几点:

  • 注意用GET方法传递的url参数...我在我的应用程序页面之间导航时传递参数,这些参数使得我的URL与清单文件中的URL不同,使得缓存失败.
  • 在我的手机上测试离线模式时,我只是关闭WIFI认为这足以触发我的应用程序的缓存版本但它不是......因为我正在测试我在本地网络IP下发布的应用程序(如192.168.2.11) ),似乎我的应用程序试图通过仍处于打开状态的3G网络到达该IP ...因此在离线测试时使用飞行模式.
  • 不确定这是否是必要的,因为我在其他一些线程上读取它但我将我的清单文件重命名为cache.manifest.

问候