【问题标题】:Difference between GetCacheDir() and button "clear the cache"GetCacheDir() 和按钮“清除缓存”之间的区别
【发布时间】:2022-11-30 10:33:44
【问题描述】:

我需要以编程方式删除名为 MyXFApp 的 Xamarin.Forms 应用程序的所有缓存,方法与设置/应用程序/MyXFApp/存储页面的按钮“清除缓存”相同。

我阅读了Android和Xamarin.Forms的官方文档,并使用方法getGetCacheDir()和GetExternalCacheDir()来检索缓存目录,并将它们都删除了。 删除这两个目录后,我希望在 Setting/Apps/MyXFApp/Storage 页面中看到缓存大小为 0 字节。但是Setting/Apps/MyXFApp/Storage页面显示的cache size确实变小了,但不是严格等于0 byte,不明白为什么?

为了完全清除我的 Xamarin.Forms 缓存,我必须删除任何其他目录吗?还是 Setting/Apps/MyXFApp/Storage 显示缓存大小的错误?

否则,这两种方法之间的正确方法或区别是什么?

我试图删除从方法 get GetCacheDir() 和 GetExternalCacheDir() 获得的目录。 预计在 Setting/Apps/MyXFApp/Storage 页面中看到缓存大小为 0B,但我看到的是 20KB 而不是 0B。

【问题讨论】:

  • 请添加到问题你的代码.我假设您试图删除一个包含子目录的目录,如果有子目录,则 API 调用会拒绝删除。 (我认为这样做是为了避免一个简单的编程错误意外删除大量数据。)您是否检查过删除调用是否成功?你后来检查过文件夹,看看里面还剩下什么吗?你必须递归删除目录,以便首先删除最里面的目录。见Android how to delete a whole folder and contents

标签: xamarin.forms android-7.1-nougat android-8.1-oreo clear-cache


【解决方案1】:

我做了一个示例并使用以下代码清除缓存:

        public static bool DeleteCache(File file)
        {
            if(file != null && file.IsDirectory )
            {
                string[] children = file.List();
                for(int i = 0; i < children.Length; i++)
                {
                    bool success = DeleteCache(new File(file,children[i]));
                    if (!success)
                    {
                        return false;
                    }
                }
            }
            return file.Delete();
        }

并调用 MainActivity 中的方法:

var file = this.CacheDir;
var file1 = this.ExternalCacheDir;
DeleteCache(file);
DeleteCache(file1);

当我调用该方法时,我检查缓存大小仍有 20KB。然后我点击了应用信息并清除了缓存。我还看到缓存大小为 0KB。但是当我返回并再次进入存储页面重新加载应用程序存储页面时,我看到缓存大小再次变为 20KB。

预计在 Setting/Apps/MyXFApp/Storage 页面中看到缓存大小为 0B,但我看到的是 20KB 而不是 0B。

所以你看到的 0B 不是真的 0B,当你重新加载存储页面时,它会是 20KB。看来 Android 设备上的每个应用程序都必须存在 20KB 缓存。

我还尝试清除缓存应用程序在真实设备上的缓存。当应用程序重启时,小米设备上的缓存为 28KB。因此,当您使用应用程序中的代码清除缓存时,您的应用程序仍在运行。缓存不能清除为 0KB。

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 2015-01-17
    • 2022-01-01
    • 1970-01-01
    • 2012-11-24
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多