Android WebView - 清除缓存

2024-04-13

我有一个 WebView 控件,我想每次显示当前站点,但我认为 WebView 只显示该站点的缓存版本。我尝试了所有发现的东西here https://stackoverflow.com/questions/14392414/android-webviews-clearcache-is-very-slow但似乎没有任何作用。我还尝试从 context.getCacheDir() 中删除所有文件,但没有成功。我能做些什么?

这是我的 onCreate 方法的代码:

    clearCache(this, 0);

    setContentView(R.layout.webview);

    deleteDatabase("webview.db");
    deleteDatabase("webviewCache.db");

    mWebView = (WebView)findViewById(R.id.webview);
    mWebView.setWebViewClient(new CenterWebViewClient(this));
    mWebView.setWebChromeClient(new CenterWebChromeClient(this));
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setAppCacheEnabled(false);
    mWebView.getSettings().setAppCacheMaxSize(1);
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

    String  url = "https://www.exacmple.com";

    if (url != null) {
        Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
        noCacheHeaders.put("Pragma", "no-cache");
        noCacheHeaders.put("Cache-Control", "no-cache");
        mWebView.loadUrl(url, noCacheHeaders);
    }

清除缓存函数:

static int clearCacheFolder(final File dir, final int numDays) {

    int deletedFiles = 0;
    if (dir!= null && dir.isDirectory()) {
        try {
            for (File child:dir.listFiles()) {

                //first delete subdirectories recursively
                if (child.isDirectory()) {
                    deletedFiles += clearCacheFolder(child, numDays);
                }

                //then delete the files and subdirectories in this dir
                //only empty directories can be deleted, so subdirs have been done first
                if (child.lastModified() < new Date().getTime() - numDays * DateUtils.DAY_IN_MILLIS) {
                    if (child.delete()) {
                        deletedFiles++;
                    }
                }
            }
        }
        catch(Exception e) {
            Log.e("WebView", String.format("Failed to clean the cache, error %s", e.getMessage()));
        }
    }
    return deletedFiles;
}

    public static void clearCache(final Context context, final int numDays) {
         Log.i("WebView", String.format("Starting cache prune, deleting files older than %d days", numDays));
         int numDeletedFiles = clearCacheFolder(context.getCacheDir(), numDays);
         Log.i("WebView", String.format("Cache pruning completed, %d files deleted", numDeletedFiles));
    }

似乎只要显示 webview 就可以清除缓存

 @Override
public void onPageFinished(WebView view, String url) {
     super.onPageFinished(view, url);
     view.clearCache(true);
}

via - https://stackoverflow.com/a/10701961/2250339 https://stackoverflow.com/a/10701961/2250339

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android WebView - 清除缓存 的相关文章

  • 查看寻呼机 - 使用静态变量以编程方式滑动到下一页

    我想在我的 ViewPager 中以编程方式制作幻灯片 我的问题是 滑动事件是由放置在 ViewPager 保存的片段内部的按钮调用的 我知道代码 viewpager setCurrentItem int index 现在我的想法是使 Vi
  • Android自定义控件命名空间问题

    我一直在为 Android 开发自定义控件 尽管我尝试按照建议进行操作here https stackoverflow com questions 4495511 how to pass custom component parameter
  • 毕加索磁盘缓存

    我正在使用 Picasso 从 URL 加载图像 Picasso with getApplicationContext load product getImageUrl into imageView 据我所知 每次都会访问该网址 而不是缓存
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • Android 5.0 Lollipop 中屏幕固定关闭时如何收到通知?

    我有一个在后台运行的应用程序 并在手机上发生特定事件时启动活动 我发现在 Android 5 0 中 当用户使用另一个应用程序打开屏幕固定时 startActivity intent 调用将被完全忽略 我的应用程序不知道该活动尚未启动 因此
  • FLAG_ACTIVITY_REORDER_TO_FRONT 被忽略

    我有一个包含项目列表的 FragmentActivity 当应用程序处于后台时 可以推送该项目列表 发生这种情况时 我想创建一个状态栏通知并提醒用户更新 当用户单击通知时 活动应重新排序到前面并显示在屏幕上 同时在列表底部显示新项目 所以我
  • 在后台服务中持续获取位置更新

    我正在开发需要在后台服务中持续获取位置更新的应用程序 我已经使用了它正在使用的后台粘性服务 但是 即使我添加了启动广播并在那里启动了服务 启动完成后服务也没有启动 服务启动并立即被杀死 另外 这不适用于奥利奥 服务在应用程序关闭几分钟后停止
  • android:进程和进程名称

    我试图理解android process属性 Ref says http developer android com guide topics manifest application element html proc 如果分配给该属性的
  • 无法在云控制台中启用 Maps SDK for Android

    我在云控制台中启用适用于 Android 的 Maps SDK 时遇到此问题 https console cloud google com https console cloud google com 它会抛出以下错误 附截图 我收到错误消
  • 将图像保存到内部存储器并将出现在图库中

    我搜索了很多与我的问题相关的问题 是否有办法将图像存储在内存中并且它也应该出现在图库中 这是完全有可能的 我以前也这么做过 在将图像保存到内存 或称为应用程序文件夹等 之前 您最好设置Context MODE WORLDREADABLE 虽
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个
  • 如何更改 Android 12 启动屏幕中的图标形状?

    我想要矩形形状的启动屏幕图标 而不是 android 12 中的圆形形状 我不相信你可以 如果你看这里的第 3 点 https developer android com about versions 12 features splash
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • 如何在 onDraw() 方法中定义与像素无关的高度

    我扩展了 View 来构建自定义小部件 我想用独立的像素单位定义小部件的高度 我认为可以通过将像素密度乘以所需的高度来完成 但我不知道该怎么做 到目前为止我所拥有的 最小化 public class Timeline extends Vie
  • Android 4.2 - Environment.getExternalStorageDirectory().getPath() 行为

    我一直在开发一个android应用程序 在上次更新到4 2之前 我使用 Environment getExternalStorageDirectory getPath 它返回了我 storage sdcard0 但自从更新后我现在得到了 s
  • 将 Crashlytics 集成到图书馆项目

    我有一个图书馆项目 自定义视图库项目 它没有任何活动 服务 我想将 Crashlytics SDK 集成到我的库中 当我尝试通过 Android Studio 的 Crashlytics 插件 工具栏中的图标 添加它时 它只是停留在 Che
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService

随机推荐

  • 我什么时候应该在 ColdFusion 中使用#?

    这是教授新人 ColdFusion 的最大障碍之一 何时使用 充其量是不明确的 由于使用它们通常不会产生问题 因此大多数人似乎倾向于过度使用它们 那么 基本规则是什么 我认为说哪里不使用 可能更容易 唯一的地方是在 cfif 语句和 cfs
  • MySQLClient 无法在装有最新版本 Big Sur 的 Macbook Pro M1 上通过 pip 安装

    在确保自制软件可以在其上运行后 我刚刚购买了一台带有 M1 芯片的新 Macbook Pro 我可以 pip 安装除 mysqlclient 之外的任何其他库 并且通过自制程序安装它没有问题 所以我想从下面的错误消息中看出 这是 mysql
  • 通过 HTTP 替代方案访问 JMX

    我们使用 MX4J 通过容器本身的 Web 界面访问 JMX 相关操作 属性 我想知道是否有可用的替代方案 因为 MX4J 的最后一个服务版本是在 2006 年 我基本上希望克服 MX4J 在处理集合方面的限制 I was 实验 http
  • 如何在 Linux 中以编程方式反转屏幕颜色

    例如 在 Ubuntu 中 您可以使用 Super M 反转屏幕颜色 需要桌面效果 请参阅 1 其他操作系统也有类似的功能 尽管我并不真正关心 Linux 以外的任何操作系统 如果我想编写一个在运行时反转屏幕颜色的简单程序 我应该考虑哪个
  • 如何将字符串中每个单词的第一个字母大写?

    s the brown fox 在这里做点什么 s应该 The Brown Fox 做到这一点最简单的方法是什么 The title http docs python org library stdtypes html str title字
  • VBS 脚本查找特定扩展名的所有文件并将它们复制到特定目的地

    我正在制作一个项目 通过创建一个脚本来在工作中使用来自动化我们的一个流程 我希望脚本检查用户名的输入 以搜索指定的用户配置文件路径中的任何 doc docx pdf pst 等文件 并将它们按原样复制到网络驱动器位置上创建的文件夹中 我的主
  • Grails 2抽象域继承问题

    当在 Grails 中使用抽象 或非抽象 继承时 以下内容对我不起作用 很快 我的继承如下 abstract BaseClass SomeClass extends BaseClass SomeOtherClass extends Base
  • Cordova iOS 启动 comgooglemaps 失败

    我有一个小问题 我使用 comgooglemaps 方案来调用谷歌地图并执行搜索 这工作正常 但问题是如果用户没有安装谷歌地图 现在 我如何检查这一点以及是否未安装谷歌地图以通过浏览器调用谷歌 或者调用用户使用的其他地图应用程序 Thanx
  • 使用 group_by(多个变量)时的 dplyr 问题

    我想开始使用 dplyr 代替 ddply 但我无法了解它是如何工作的 我已阅读文档 例如 为什么当我尝试 mutate 时 group by 函数无法按预期工作 看看mtcar 图书馆 车 假设我制作了一个 data frame 它是 m
  • UITableview 中的 UItextView,自动更正气泡不可见

    我有一个带有自定义单元格的 UITableView 每个单元格包含一个 UITextView 并且当用户在 TextView 中键入文本时 单元格会调整大小 我的问题是 当用户位于 TextView 自动更正第一行时 当前单元格中将看不到气
  • 将 HTML 类/ID 添加到 Google 地图标记 (API V3)

    如何向 Google Maps API V3 标记添加类或 ID 我希望能够使用 jQuery 访问标记 编辑 嗨 clarkf 感谢您的回复 使用 Firebug 在检查我的地图时我无法看到这些类 但我确实注意到有两个 div 一种用于图
  • 在页面重新加载时传递 $_GET 参数[重复]

    这个问题在这里已经有答案了 我试图做到这一点 以便当页面重新加载时 它使用与上一页相同的 GET 参数来重定向我 现在我正在尝试使用标头来实现此目的 但是当我提交表单时 变量 id 为空 HTML 表单
  • 为什么 Elastic Load Balancing 报告“停止服务”?

    我正在尝试设置弹性负载均衡 ELB http aws amazon com elasticloadbalancing 在AWS中用于在多个实例之间拆分请求 我基于相同的 AMI 创建了多个网络服务器镜像 并且我能够单独 ssh 进入每个镜像
  • Windows 批处理 FOR 命令制表符分隔符

    我正在尝试使用 Windows 批处理FOR命令 http www microsoft com resources documentation windows xp all proddocs en us for mspx mfr true
  • 使用 junit @Rule、expectCause() 和 hamcrest 匹配器

    我有一个测试 Rule public ExpectedException thrown ExpectedException none Test public void testMethod final String error error
  • PyQt 的 QMainWindow closeEvent 从未被调用

    我在 python 中使用 pyqt4 当我关闭 QMainWindow 窗口时 它不被处理closeEvent方法 请有人告诉我这段代码有什么问题 from PyQt4 import QtCore QtGui class Ui MainW
  • 未找到节点检查器命令

    我尝试安装并运行node inspector使用一堆不同的命令仍然无法运行它 Jordans MacBook Pro angular express blog jordanbaucke node inspector bash node in
  • 为什么 Blazor 生命周期方法会执行两次?

    因此 随着 asp net core 3 0 和 blazor 1 0 的发布 我开始使用 blazor 进行一些实际工作 将 Blazor 组件代码拆分为后台代码时 我使用以下内容 public class LogoutModel Bla
  • 是否可以为 Microsoft SQL Server 上的 SQL 查询设置超时?

    我有一个场景 有时用户选择正确的参数并进行需要几分钟或更长时间才能执行的查询 我无法阻止他选择这样的参数组合 这是相当合法的 所以我想在查询上设置超时 请注意 我真的想停止查询执行本身并回滚任何事务 因为否则它会占用大部分服务器资源 如果添
  • Android WebView - 清除缓存

    我有一个 WebView 控件 我想每次显示当前站点 但我认为 WebView 只显示该站点的缓存版本 我尝试了所有发现的东西here https stackoverflow com questions 14392414 android w