当前位置: 首页 > 知识库问答 >
问题:

如何在Android 4.2.2及以上版本中编程清除应用程序缓存

孟翰藻
2023-03-14

在Android4.0中,我使用这个解决方案来清除我的应用程序缓存,它工作得很好:

public void clearApplicationData()
{
    File cache = getCacheDir();
    File appDir = new File(cache.getParent());
    if (appDir.exists()) {
        String[] children = appDir.list();
        for (String s : children) {
            if (!s.equals("lib")) {
                deleteDir(new File(appDir, s));
            }
        }
    }
}

public static boolean deleteDir(File dir)
{
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    return dir.delete();
}

我对谷歌地图缓存清除感兴趣,上面写的解决方案适合我在Android 4.0中工作,但不适合Android 4.2.2。如有任何帮助,不胜感激。

我在logcat中没有任何错误。设备:三星Galaxy Tab 2 7.0'

共有1个答案

通令
2023-03-14
PackageManager  pm = getPackageManager();
     // Get all methods on the PackageManager
Method[] methods = pm.getClass().getDeclaredMethods();
for (Method m : methods) {
    if (m.getName().equals("freeStorage")) {
        try {
            long desiredFreeStorage = 8 * 1024 * 1024 * 1024; 
            m.invoke(pm, desiredFreeStorage , null);
        } catch (Exception e) {
           // Method invocation failed. Could be a permission problem
        }
        break;
    }
}
 类似资料:
  • 问题内容: 我想编写一个实用程序,用户可以在其中选择一组已安装的应用程序并清除其数据缓存,例如,您可以使用内置的“设置”->“应用程序”设置屏幕中的“清除缓存”按钮来手动执行此操作。 如何访问每个应用程序具有多少缓存数据并以编程方式清除这些缓存? 问题答案: 普通的SDK应用程序无权访问(更不用说修改)其他应用程序的缓存了,甚至无权修改您的文件。 在具有以root用户身份运行的应用程序的有根电话上

  • 问题内容: 我正在为android应用程序开发自动化测试(使用Robotium)。为了确保测试的一致性和可靠性,我想以干净状态(正在测试的应用程序)开始每个测试。为此,我需要清除应用数据。可以在“设置/应用程序/管理应用程序/ [我的应用程序] /清除数据”中手动完成此操作 以编程方式完成此操作的推荐方法是什么? 问题答案: 您可以使用包管理器工具清除已安装应用的数据(类似于按设备上应用设置中的“

  • 更新我的Android应用程序的www文件夹(使用Cordova 3.6.3)时,该应用程序会显示我的www的旧缓存版本。 如果我清除应用程序数据(来自Android- 当应用程序更新时(或每次应用程序启动时),如何强制应用程序清除缓存?

  • 我正在使用Spring Boot 2.3,并使用默认缓存机制使用app.properties.我定义了所有值: 例如,我利用了Spring存储库中的缓存: 它按预期工作。然而,Redis是我的几个应用程序中使用的集群,我需要第二个应用程序能够删除Redis中的一些/所有键。 应用程序A1利用缓存并将密钥放在里面。应用程序A2,需要清除部分密钥或所有密钥。 在A2中,我做到了: 但是当然,缓存名称列

  • 问题内容: 这与我以前的问题“ 每次安装时如何在Android模拟器上清除应用程序的localStorage?‘。 它还基于’ 如何清除Android应用程序缓存?’和’如何以编程方式清除应用程序数据?‘。 以上问题均未给出适用于Android PhoneGap / Cordova应用程序的简单答案。本博客文章由伊戈尔Hrupin涵盖在上下文的情况下 原生 Android应用程序,所以这个问题扩展

  • 您好,我已经在codova开发了一个带有ionic framework的移动应用程序。我已经构建了这个应用程序,并开始在android mobile上进行测试。注销时,单击“我已在后面添加此代码”: 但在手机测试时间,当我注销时 我的控制器代码: 我的注销代码: 我访问数据的身份是: