2013-04-11 373 views
1

我正在使用webview,我更喜欢缓存getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);Android Webview - 如何判断页面是否从缓存中加载?

但我需要知道一个网页是第一次加载,还是它来自缓存。

我看不到一种方法来做到这一点,除非手动缓存我自己的网页。有没有人知道查询缓存的方法,webview必须在幕后做这件事!

+0

如果无法建立连接,则不提问者想知道何时使用缓存。他们让使用缓存之前的连接失败,我不能用这个为我的情况。 – serenskye 2013-04-11 16:16:06

+0

你为什么要这样做? – 2013-04-11 16:23:00

+0

我有一个网页加载时出现的progressBar和screen dimmer,但是如果页面被缓存,我不想显示它,这是没有必要的,它使流动感觉很笨重。 – serenskye 2013-04-11 16:36:41

回答

0

首先,您必须为您的webView设置WebViewClient/WebChromeClient。您可能想分别查看WebViewClient/WebChromeClient类。下面列出了一些API,我列出了其中一些可能对您感兴趣的API:(Android开发人员网站摘录)

/******** WebChromeClient CLASS *** ***/

公共无效getVisitedHistory(ValueCallback回调)

获取所有的列表访问历史记录项,用于链路着色

/********* WebStorage CLASS ** **/

public void getOrigins(ValueCallback callback)

获取当前使用Application Cache或Web SQL数据库API的来源。此方法异步运行,结果通过ValueCallback提供。源地址是从原点的字符串表示形式到WebStorage.Origin对象的Map类型的映射。

如果这些都看不出来,那么您可以依靠直接查询应用程序的缓存目录(在eclipse IDE中的DDMS选项卡下的/ data/data/my_app_package/cache),以编程方式您将能够访问缓存目录使用getCacheDir()API。具体细节请参考How do I view Android application specific cache?

相关问题