2015-10-04 56 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上上传图片,尝试对该路径进行硬编码,看看它是否有效。如果是这样的话,你必须找到解决方法来获取电影数据库中的图像。