1

我正在尝试将 HTML5 中的应用程序缓存用于 Android PhoneGap 应用程序,但这不起作用,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 支持的平台

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

4

3 回答 3

6

我相信默认情况下 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 )

于 2012-10-03T14:27:54.940 回答
1

对于 pathToCacheDir,使用:

String pathToCacheDir = this.getApplicationContext().getCacheDir().getAbsolutePath()
于 2013-01-10T08:56:00.140 回答
1

您是否设置了正确的 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>
于 2013-04-30T06:33:25.763 回答