piccaso(二)內部緩存及優化

Picasso的緩存位置

1、採用了Okhttp下載,那麼它一定是使用了client.setCache(new com.squareup.okhttp.Cache(cacheDir, maxSize));

2、public OkHttpDownloader(final Context context) { this(Utils.createDefaultCacheDir(context)); }

3、static File createDefaultCacheDir(Context context) {
File cache = new File(context.getApplicationContext().getCacheDir(), PICASSO_CACHE);
if (!cache.exists()) {
//noinspection ResultOfMethodCallIgnored
cache.mkdirs();
}
return cache;
}

4、context.getApplicationContext().getCacheDir() :

getCacheDir()方法用於獲取/data/data//cache目錄
getFilesDir()方法用於獲取/data/data//files目錄
Context.getExternalFilesDir()方法可以獲取到 SDCard/Android/data/你的應用的包名/files/ 目錄,一般放一些長時間保存的數據
Context.getExternalCacheDir()方法可以獲取到 SDCard/Android/data/你的應用包名/cache/目錄,一般存放臨時緩存數據

5、private static final String PICASSO_CACHE = “picasso-cache”;

ok,那麼緩存目錄就在 /data/data//cache/picasso-cache/下邊

6、如果想自己指定目錄,那麼像我下面這樣就ok啦:
private void loadImageCache() {
final String imageCacheDir = /* 自定義目錄 */ + “image”;
Picasso picasso = new Picasso.Builder(this).downloader(
new OkHttpDownloader(new File(imageCacheDir))).build();
Picasso.setSingletonInstance(picasso);
}


RGB_565

默認情況下,Android使用ARGB_8888
對於不透明的圖片可以使用RGB_565來優化內存。

Picasso.with( imageView.getContext() )
.load(url)
.config(Bitmap.Config.RGB_565)
.into(imageView);

Android中有四種,分別是:

  • ALPHA_8:每個像素佔用1byte內存
  • ARGB_4444:每個像素佔用2byte內存
  • ARGB_8888:每個像素佔用4byte內存
  • RGB_565:每個像素佔用2byte內存
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章