将Square Picasso的缓存大小限制为最大60MB

苦山

我目前正在使用Picasso在多个回收者视图中的应用程序中下载和缓存图像。到目前为止,毕加索已使用了大约49MB的缓存大小,我担心随着更多图片的出现,这一数字会变得更高。

我正在使用默认Picasso.with(context)对象。请回答以下问题:

1)有没有一种方法可以限制毕加索的缓存大小。不能将MemoryPolicy和NetworkPolicy设置为NO_CACHE。我需要缓存,但要达到一定级别(最大60MB)

2)在毕加索中是否有一种方法可以像Glide DiskCacheStrategy.RESULT中那样存储已调整大小/裁剪的图像

3)如果该选项是使用OKHTTP,请引导我学习一个很好的教程,以使用它来限制Picasso的缓存大小。(毕加索2.5.2)

4)由于我使用的是毕加索的Gradle依赖项,因此如何添加一个清晰的Cache函数,如下所示:

清除毕加索的缓存

吉拉德·埃什科利(Gilad Eshkoli)

请尝试此操作,它似乎确实对我有用:

我将其用作Singleton。只需将DISK / CACHE大小参数放在60处即可。

//Singleton Class for Picasso Downloading, Caching and Displaying Images Library
public class PicassoSingleton {

    private static Picasso mInstance;
    private static long mDiskCacheSize = CommonConsts.DISK_CACHE_SIZE * 1024 * 1024; //Disk Cache
    private static int mMemoryCacheSize = CommonConsts.MEMORY_CACHE_SIZE * 1024 * 1024; //Memory Cache
    private static OkHttpClient mOkHttpClient; //OK Http Client for downloading
    private static Cache diskCache;
    private static LruCache lruCache;


    public static Picasso getSharedInstance(Context context) {
        if (mInstance == null && context != null) {
            //Create disk cache folder if does not exist
            File cache = new File(context.getApplicationContext().getCacheDir(), "picasso_cache");
            if (!cache.exists())
                cache.mkdirs();

            diskCache = new Cache(cache, mDiskCacheSize);
            lruCache = new LruCache(mMemoryCacheSize);
            //Create OK Http Client with retry enabled, timeout and disk cache
            mOkHttpClient = new OkHttpClient();
            mOkHttpClient.setConnectTimeout(CommonConsts.SECONDS_TO_OK_HTTP_TIME_OUT, TimeUnit.SECONDS);
            mOkHttpClient.setRetryOnConnectionFailure(true);
            mOkHttpClient.setCache(diskCache);

            //For better performence in Memory use set memoryCache(Cache.NONE) in this builder (If needed)
            mInstance = new Picasso.Builder(context).memoryCache(lruCache).
                            downloader(new OkHttpDownloader(mOkHttpClient)).
                            indicatorsEnabled(CommonConsts.SHOW_PICASSO_INDICATORS).build();

        }
    }
        return mInstance;
}

    public static void updatePicassoInstance() {
        mInstance = null;
    }

    public static void clearCache() {
        if(lruCache != null) {
            lruCache.clear();
        }
        try {
            if(diskCache != null) {
                diskCache.evictAll();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        lruCache = null;
        diskCache = null;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Square Picasso的缓存大小限制为最大60MB

来自分类Dev

如何将ffmpeg输入流的输出文件大小限制为10 MB

来自分类Dev

Android-将堆大小限制为16MB以进行测试?

来自分类Dev

svnlook cat ::批处理脚本将提交大小限制为10MB

来自分类Dev

我们如何在 onTouch 事件中使用 drawRect() 将框限制为 Square

来自分类Dev

将最小大小限制为html表

来自分类Dev

Grails:将输入大小限制为一

来自分类Dev

将图像大小限制为 ScrollView、Swift

来自分类Dev

如何将列最大高度限制为屏幕高度?即让孩子“match_parent”大小

来自分类Dev

将输入大小限制为C#中TextBox的大小

来自分类Dev

将动态页面的可缓存性限制为CloudFront

来自分类Dev

将 ScaleTransform 限制为最大高度和宽度

来自分类Dev

C ++(以某种方式)将结构限制为父联合大小

来自分类Dev

如何将图片大小限制为其父容器

来自分类Dev

如何将jquery脚本限制为容器div的大小

来自分类Dev

如何将iOS图表限制为视图大小

来自分类Dev

RecyclerView --SelectionTracker将选择大小限制为10个项目

来自分类Dev

如何将UIImageView限制为最佳大小?

来自分类Dev

如何将DiskCache插件限制为特定的存储大小?

来自分类Dev

如何将iOS图表限制为视图大小

来自分类Dev

将图像限制为包含视图的大小 (xamarin.android)

来自分类Dev

如何将元素的大小限制为模态对话框的大小?

来自分类Dev

将查找转换部分缓存限制为已加载的值

来自分类Dev

将Square与Rails集成项目

来自分类Dev

Square PoS API 限制

来自分类Dev

将特征限制为对象?

来自分类Dev

将VCR限制为规格

来自分类Dev

将JOIN限制为1

来自分类Dev

将SSH限制为ECDSA

Related 相关文章

热门标签

归档