Android 清除应用程序缓存也会清除提供程序

Android clearing app cache clears provider also

我使用以下代码删除了我的应用缓存。

public void clearApplicationData() {

        File cacheDirectory = getCacheDir();
        File applicationDirectory = new File(cacheDirectory.getParent());
        if (applicationDirectory.exists()) {
            String[] fileNames = applicationDirectory.list();
            for (String fileName : fileNames) {
                if (!fileName.equals("lib")) {
                    deleteFile(new File(applicationDirectory, fileName));
                }
            }
        }
    }

    public static boolean deleteFile(File file) {
        boolean deletedAll = true;
        if (file != null) {
            if (file.isDirectory()) {
                String[] children = file.list();
                for (int i = 0; i < children.length; i++) {
                    deletedAll = deleteFile(new File(file, children[i])) && deletedAll;
                }
            } else {
                deletedAll = file.delete();
            }
        }
        return deletedAll;
    }

一旦我删除了代码,就意味着它删除了我在清单中声明的​​提供程序。有什么方法可以在不删除内容提供者的情况下清除缓存吗?

您可以通过不删除数据库文件夹来避免这种情况

if (!fileName.equals("lib")&&!fileName.equals("files")&&!fileName.equals("database")) {
                    deleteFile(new File(applicationDirectory, fileName));
                }