【问题标题】:Android Webview - how can I tell if the page is loaded from cache? [duplicate]Android Webview - 我如何判断页面是否从缓存中加载? [复制]
【发布时间】:2013-04-11 16:10:00
【问题描述】:

我使用的是 webview,我更喜欢缓存 getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

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

除了自己手动缓存页面外,我看不到其他方法。有谁知道查询缓存的方法,webview一定是在幕后做的!

【问题讨论】:

  • 如果无法建立连接,提问者想知道何时使用缓存。他们在使用缓存之前让连接失败,我不能在我的情况下使用它。
  • 你为什么要这样做?
  • 我有一个在网页加载时出现的进度条和屏幕调光器,但如果页面被缓存,我不想显示它,没有必要,它让流程感觉很笨拙。
  • 即使页面被缓存,Chrome 也确实会显示进度条,而且不会让人觉得笨重。
  • 谢谢,但这无济于事,我不是在寻找 UI 提示,它需要针对这个特定用例实现

标签: android android-webview


【解决方案1】:

首先,您必须为您的 webView 设置一个 WebViewClient/WebChromeClient。您可能想分别查看 WebViewClient/WebChromeClient 类。下面列出了一堆 API,我已将其中一些您可能感兴趣的内容记下来:(摘自 Android 开发者网站)

/********WebChromeClient 类******/

public void getVisitedHistory(ValueCallback 回调)

获取所有访问历史项目的列表,用于链接着色

/*********WebStorage 类****/

public void getOrigins(ValueCallback 回调)

获取当前使用应用程序缓存或 Web SQL 数据库 API 的源。此方法异步操作,结果通过 ValueCallback 提供。原点以 Map 类型的地图形式提供,从原点的字符串表示形式到 WebStorage.Origin 对象。

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

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2014-08-06
    • 2013-02-01
    相关资源
    最近更新 更多