【问题标题】:Application cache in HTML5 doesn't work in Android PhoneGap applicationHTML5 中的应用程序缓存在 Android PhoneGap 应用程序中不起作用
【发布时间】:2012-09-24 10:49:00
【问题描述】:

我正在尝试为 Android PhoneGap 应用程序使用 HTML5 中的应用程序缓存,但这不起作用,ApplicationCahce 事件感觉不到。

function logEvent(event) {
        console.log(event.type);
    }

    window.applicationCache.addEventListener('checking', logEvent, false);
    window.applicationCache.addEventListener('noupdate', logEvent, false);
    window.applicationCache.addEventListener('downloading', logEvent, false);
    window.applicationCache.addEventListener('progress', logEvent, false);
    window.applicationCache.addEventListener('cached', logEvent, false);
    window.applicationCache.addEventListener('updateready', logEvent, false);
    window.applicationCache.addEventListener('obsolete', logEvent, false);
    window.applicationCache.addEventListener('error', logEvent, false);

此外,此代码在 iOS PhoneGap 和 Android 浏览器中运行,此链接适用于支持的平台。 Application Cahce Supported platforms

所以,任何建议都会有所帮助。

【问题讨论】:

    标签: android html cordova android-browser application-cache


    【解决方案1】:

    我相信默认情况下 WebView 中未启用应用程序缓存。您需要做的是在扩展 DroidGap 调用的 Java 类中:

    this.appView.getSettings().setAppCacheEnabled(true);
    

    在你的 onCreate() 方法中。

    您可能还需要致电:

    this.appView.getSettings().setAppCacheMaxSize(sizeInBytes);
    this.appView.getSettings().setAppCachePath(pathToCacheDir);
    

    请注意,在调用 setAppCachePath() 之前,缓存目录必须存在。

    继续阅读...

    http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheEnabled(boolean) http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(long) http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCachePath(java.lang.String)

    【讨论】:

    • 谢谢,但是你给我建议的 pathToCacheDir 是什么。
    • /data/data/{package name}/app_cache 或 /sdcard/Android/data/{package name}/app_cache 似乎都是合理的默认值。
    • 我有同样的问题。当我修改我的静态文件并重新加载应用程序时,似乎使用新的静态文件。但是应用程序缓存事件运行良好,它显示noupdate。我试过你的代码,但它也不起作用。
    • 也许以前是这样,但没有这个对我来说似乎工作正常
    【解决方案2】:

    对于 pathToCacheDir,使用:

    String pathToCacheDir = this.getApplicationContext().getCacheDir().getAbsolutePath()
    

    【讨论】:

    • 这条路径在哪里? ,为什么是这个地方?
    • 参见 [Context.getCacheDir] (developer.android.com/reference/android/content/…)。来自 API 文档:返回文件系统上应用程序特定缓存目录的绝对路径。您可以运行Log.d("mytest", pathToCacheDir);查看LogCat中的路径。
    【解决方案3】:

    您是否设置了正确的 mime 类型? 起初我像thie一样使用'.txt':

    <!DOCTYPE html>
    <html manifest="cache.txt">
    <head>
    

    它在 iOS、Chrome 中运行良好,但在 Android 中无法运行!

    当我设置了正确的 mime-type 后,效果很好~

    在tomcat中,默认扩展名是'.appcache',默认mime-type是:

    <mime-mapping>
        <extension>appcache</extension>
        <mime-type>text/cache-manifest</mime-type>
    </mime-mapping>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多