HTML5中的应用程序缓存在Android PhoneGap应用程序中不起作用

时间:2012-10-03 13:35:35

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

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

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 Browser中运行,此链接用于支持的平台。 Application Cahce Supported platforms

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

3 个答案:

答案 0 :(得分: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(booleanhttp://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(longhttp://developer.android.com/reference/android/webkit/WebSettings.html#setAppCachePath(java.lang.String

答案 1 :(得分:1)

对于pathToCacheDir,请使用:

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

答案 2 :(得分:1)

你设置了正确的mime类型吗? 起初我使用'.txt'就像thie:

<!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>