2015-10-04 51 views
0

,我注意到緩存未正常工作,我期望:畢加索緩存似乎沒有我使用的畢加索來處理圖像加載和緩存在我的Android Udacity項目合作

enter image description here

正如您在左邊的片段中看到的那樣,圖像已經加載到更早的線程中。現在,使用相同的URL鏈接,我要求畢加索將該圖像放在右側的片段中。

這裏是產生在左片段的網格視圖(與先發生)的代碼:

https://github.com/esend7881/udacity-android-popmovie/blob/a9a1b9a19a37594bb5edd736b7ec59229fb5905a/app/src/main/java/com/ericsender/android_nanodegree/popmovie/adapters/GridViewAdapter.java#L71

String load = String.format(sImgUrl, sImgSize, movie.poster_path); 

    Picasso.with(mContext.getApplicationContext()) 
      .load(load) 
      .placeholder(R.drawable.abc_btn_rating_star_on_mtrl_alpha) 
      .error(R.drawable.abc_btn_rating_star_off_mtrl_alpha) 
      .resize(550, 775) 
      .into(viewHolder.imageView); 

然後在這裏是一個運行在右片段的代碼:

https://github.com/esend7881/udacity-android-popmovie/blob/a9a1b9a19a37594bb5edd736b7ec59229fb5905a/app/src/main/java/com/ericsender/android_nanodegree/popmovie/fragments/MovieDetailsFragment.java#L308

Picasso.with(getActivity().getApplicationContext()) 
      .load(String.format(sImgUrl, sImgSize, mMovieObj.poster_path)) 
      .error(R.drawable.blank) 
      .fit()// .resize(366, 516) 
      .into(mMovieThumb, new com.squareup.picasso.Callback() { 
       @Override 
       public void onSuccess() { 
        Utils.log(sw.toString()); 
        Utils.hideViewSafe(mMovieThumbProgress); 
       } 

       @Override 
       public void onError() { 
        Utils.log(sw.toString()); 
        Utils.hideViewSafe(mMovieThumbProgress); 
       } 
      }); 

我使用在每個相同的應用程序上下文以及負載文本:畢加索應該

String.format(sImgUrl, sImgSize, mMovieObj.poster_path))

getActivity().getApplicationContext()

所以,我想檢測完全相同的URL負載時鏈接會在短時間內出現在相同的上下文中,然後畢加索會將完全相同的圖像加載迴應用程序。

如果這不是畢加索緩存如何工作,那麼它是如何呢?

+0

不知道它是如何工作的,但我猜:尺寸很重要。畢加索創造不同版本的相同圖像可以解釋這種行爲。 – zapl

+0

嗯,我以爲畢加索會下載原始圖像,然後在隨後的調用中調整大小。如果這實際上是畢加索正在做的事情(只緩存確切的大小)是否有辦法禁用,並讓畢加索緩存原始圖像? –

回答

0

這可能與獲取不允許緩存的圖像時收到的HTTP標頭有關,因爲畢加索依靠HTTP組件來執行緩存。

嘗試在imgur上上傳圖片,嘗試對該路徑進行硬編碼,看看它是否有效。如果是這樣的話,你必須找到解決方法來獲取電影數據庫中的圖像。