2015-03-13 241 views
1

所以,我開始我的項目,並希望在我的項目中使用畢加索,因爲它受到很多項目的歡迎和使用。 我包括使用gradle的畢加索,並試圖加載facebook配置文件的URL與此。 http://graph.facebook.com/rohitiskul/picture畢加索:從磁盤加載緩存圖像太慢

它工作得很好。它從網絡加載圖像沒有任何問題。我重新啓動了應用程序(沒有真正殺死進程)。它向我展示了即時在內存中緩存的相同圖像。 但後來,我殺了應用程序(強制停止)並重新啓動。花了將近10多秒來加載圖像。當我檢查調試日誌時,該映像從磁盤加載。

我的代碼看起來是這樣的 - 在MainActivity-

Picasso.with(context) 
.load("http://graph.facebook.com/rohitiskul/picture") 
.into(imageView); 

在應用講座

Picasso picasso = new Picasso.Builder(this) 
.indicatorsEnabled(true).loggingEnabled(true).build() 

Picasso.setSingletonInstance(picasso); 

任何人只要有類似的問題?任何解決方案都會有幫助。

我試着用UniversalImageLoader加載相同的Url,從磁盤獲取緩存圖像時速度很快。

編輯

早些時候在與我的應用程序打,我發現畢加索不加載緩存映像的磁盤時設備處於脫機狀態。

回答

0

我之前也遇到過這個問題,我知道畢加索是根據URL中提到的圖像名稱來引用緩存圖像的。

在你的情況下,你沒有像'image1.jpg'這樣的URL中的圖像名稱。由於畢加索發現很難從緩存中讀取並下載圖像每次

你可以給一個嘗試圖像包含在URL中的形象和名稱,將工作

+0

這似乎是完美的點,但更早的時候,當我脫機並打開應用程序,它甚至沒有顯示磁盤緩存圖像 – rohit 2015-03-13 16:43:47

+0

我不知道爲什麼會發生這種情況。您是否正在處理清除緩存? – Fahim 2015-03-13 16:49:04

+0

我的應用程序中只有一行是我在OP中說過的,沒有別的。沒有處理,沒有配置.. – rohit 2015-03-13 16:50:57

0

畢加索不提供磁盤緩存盒子外面。相反,它依賴於一個Http Cache。

確保您將OkHttp添加到您的依賴列表。

+0

它已經存在於我的依賴關係..這就是爲什麼畢加索從磁盤返回緩存的圖像。問題是操作太慢,並且以某種方式依賴於網絡 – rohit 2015-03-14 04:28:48

1

我遇到同樣的問題, 但只找到第一個圖像慢,後面的圖像會很快。

可能它需要預熱(加載索引緩存)?

+0

我對此並不確定。但也許我的意見。 :) – rohit 2016-04-07 17:07:58

0

好的,我得到了你的問題。我已經這樣做

Picasso.with(context) 
     .load("http://graph.facebook.com/rohitiskul/picture") 
     .networkPolicy(NetworkPolicy.OFFLINE) 
     .into(imageView, new Callback() { 
      @Override 
      public void onSuccess() { } 

      @Override 
      public void onError() { 
       // Try again online if cache failed 
       Picasso.with(context) 
         .load("http://graph.facebook.com/rohitiskul/picture") 
         .into(imageView); 
      } 
     }); 

說明固定它:

  1. 畢加索將尋找在高速緩存中的圖像。
  2. 如果只有失敗,那麼圖像將通過網絡下載。在你的情況下從Facebook。