2014-10-30 50 views
1

我使用畢加索方庫來加載我的android應用程序中的圖像。這樣做時,它也能正常工作:Android Imge畢加索廣場緩存大小

Picasso.with(getApplicationContext()).load(Properties.IMAGE_URL + i).transform(transformation).centerCrop().fit().into(imgeButton); 

我的問題是圖像的加載速度太慢,我想緩存要大於它是現在。我發現只使用一張圖片時,緩存工作正常;第一次圖像不會被緩存,並且在每次調用相同的代碼後,圖像將從緩存而不是網絡中獲取。 隨着圖像數量的增加,看起來緩存太小,圖像被替換。緩存大小是否可以修改/放大?

任何幫助,這將不勝感激。

謝謝

回答

2

您可以指定自己的LRUCache for Picasso來使用。

Picasso picasso = new Picasso.Builder(context).memoryCache(
      new LruCache(cacheSize)).build(); 

我認爲默認情況下,畢加索使用可用堆的1/7作爲它的LRU。但是你可以通過使用設備內存類來計算你想要的尺寸。

int memClass = ((ActivityManager) mApplicationContext 
      .getSystemService(Context.ACTIVITY_SERVICE)) 
      .getLargeMemoryClass(); 
int cacheSize = 1024 * 1024 * memClass/4; 

祝你好運!

+0

感謝您的回答。你將如何緩存下一張要顯示的圖片?假設您正在顯示來自圖庫的圖片,如何總是緩存下一張要顯示的圖片以避免加載時間? – tzuvy 2014-11-02 19:35:47

+0

乾草@DejanRistic我使用畢加索從磁盤加載圖像如下picasso.with(context).load(file).into(imageview); ......我如何以這種方式設置記憶現金? thanx – Error 2015-11-14 18:27:23

+0

@Error Picasso支持使用資源作爲圖像源,所以我認爲它會以相同的方式工作。您可以啓用調試來查看圖像的來源,它會告訴你它們來自哪裏。 在畢加索實例上調用setIndicatorsEnabled(true)。它會有一個小綵帶表明來源。我相信藍色是磁盤,綠色是內存,紅色是網絡。 – DejanRistic 2015-11-16 14:31:29