Picasso 修改緩存路徑

Picasso 是 Square 公司開源的一個很是友好的圖片加載框架,使用範圍也比較普遍。具體的使用這裏就不作介紹了,文章主要講講如何修改圖片的緩存路徑。Picasso默認的緩存路徑位於data/data/your package name/cache/picasso-cache/下。開發過程當中咱們不免會遇到一些需求,須要咱們去修改圖片的緩存路徑。java

分析

咱們注意到,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))就能夠實現修改緩存路徑了。框架

實現

廢話很少說,直接上代碼:ui

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替換成低版本吧。其實這是有辦法解決的。this

使用 OkHttp3Downloader

爲了解決上面描述的不能使用OkHttp3做爲下載器的問題,Picasso做者jakewharton大神專門寫了一個OkHttp3Downloader庫。使用也很是簡單,在Module dependencies添加依賴:3d

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

而後設置downloader的時候改成OkHttp3Downloader便可:code

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緩存路徑的修改。圖片

相關文章
相關標籤/搜索