zoukankan      html  css  js  c++  java
  • Picasso 修改缓存路径

    Picasso 是 Square 公司开源的一个非常友好的图片加载框架,使用范围也比较广泛。具体的使用这里就不做介绍了,文章主要讲讲如何修改图片的缓存路径。Picasso默认的缓存路径位于data/data/your package name/cache/picasso-cache/下。开发过程中我们难免会遇到一些需求,需要我们去修改图片的缓存路径。

    分析

    我们注意到,Picasso 底层其实是使用OkHttp去下载图片,同时在设置Picasso的时候,有一个.downloader(Downloader downloader)方法,我们可以传递进去一个OkHttpDownloader( OkHttpClient client)

       Picasso picasso = new Picasso.Builder(Context)
                    .downloader(new OkHttpDownloader(client))
                    .build();
    

    看到这里你可能已经想到了,我们给OkHttpClient 设置Cache不就可以了吗,对,你没有猜错,实际就是这么干的。我们只需要给OkHttpClient 设置.cache(new Cache(file, maxSize))就可以实现修改缓存路径了。

    实现

    废话不多说,直接上代码:

     File file = new File("your cache path");
            if (!file.exists()) {
                file.mkdirs();
            }
    
            long maxSize = Runtime.getRuntime().maxMemory() / 8;//设置图片缓存大小为运行时缓存的八分之一
            OkHttpClient client = new OkHttpClient.Builder()
                    .cache(new Cache(file, maxSize))
                    .build();
    
            Picasso picasso = new Picasso.Builder(this)
                    .downloader(new OkHttpDownloader(client))
                    .build();
    

    没错就是这么简单,几行代码,你便成功的修改了缓存路径。但是。。。。,当你把OkHttp升级到OkHttp3的时候,你会发现给downloader设置OkHttpDownloader()的时候,发现它并不支持OkHttp3,这不是 shit 吗,不能因为这一个小问题,让我把OkHttp3替换成低版本吧。其实这是有办法解决的。

    使用 OkHttp3Downloader

    为了解决上面描述的不能使用OkHttp3作为下载器的问题,Picasso作者jakewharton大神专门写了一个OkHttp3Downloader库。使用也非常简单,在Module dependencies添加依赖:

    compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
    

    然后设置downloader的时候改为OkHttp3Downloader即可:

      File file = new File("your cache path");
            if (!file.exists()) {
                file.mkdirs();
            }
    
            long maxSize = Runtime.getRuntime().maxMemory() / 8;//设置图片缓存大小为运行时缓存的八分之一
            OkHttpClient client = new OkHttpClient.Builder()
                    .cache(new Cache(file, maxSize))
                    .build();
    
            Picasso picasso = new Picasso.Builder(this)
                    .downloader(new OkHttp3Downloader(client))//注意此处替换为 OkHttp3Downloader
                    .build();
    

    至此,我们就完成了Picasso缓存路径的修改。

  • 相关阅读:
    接口测试再思考
    Python开发简单爬虫
    正则表达式(Python)
    Git常用方法
    CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)
    一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
    我是这样一步步理解--主题模型(Topic Model)、LDA(案例代码)
    你想知道的特征工程,机器学习优化方法都在这了!收藏!
    从似然函数到EM算法(附代码实现)
    一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场!(词性标注代码实现)
  • 原文地址:https://www.cnblogs.com/tonycheng93/p/6381757.html
Copyright © 2011-2022 走看看