Xamarin:毕加索没有ClearCache方法

时间:2016-07-14 05:20:31

标签: android caching xamarin xamarin.android

我在我的应用程序中安装了一个xamarin Picasso,但是当用户注销我的应用程序时想要清除缓存。我找不到原始Picasso库有一个ClearCache方法。

1 个答案:

答案 0 :(得分:1)

不确定您的意思是内存还是磁盘缓存,所以:

磁盘缓存:

Picasso将其磁盘缓存名称定义为(PICASSO_CACHE = "picasso-cache"),因此如果您不使用自定义磁盘缓存,则可以直接删除应用程序的Picasso定义的磁盘缓存:

_picasso.Dispose(); // Done using Picasso
var cache = new File(BaseContext.ApplicationContext.CacheDir, "picasso-cache");
if (cache.Exists())
{
    cache.Delete();
}
// Recreate if needed, but Picasso Build() will recreate it if it does not exist
if (!cache.Exists())
{
    cache.Mkdirs();
}

如果您使用自己的LruCache或自定义磁盘Cache实施:

var cache = new File(BaseContext.ApplicationContext.CacheDir, "picasso-cache");
if (!cache.Exists())
    cache.Mkdirs();
_lruCache = new LruCache((int)Runtime.GetRuntime().MaxMemory() / 1024 * 8);
_diskLruCache = new DiskLruCache(cache, 10 * 1024 * 1024);
_picasso = new Picasso.Builder(BaseContext).MemoryCache(_lruCache).Downloader(new OkHttpDownloader(_OkHttp3Client)).IndicatorsEnabled(true).Build();

清除记忆:

_lruCache.Clear();

通过自定义磁盘缓存实施清除磁盘缓存:

_diskLruCache.Delete(); // Assumes Android style DiskLruCache