我有一个Activity
带有ImagePagerAdapter
(扩展FragmentStatePagerAdapter
)的具有此getItem
方法的:
@Override
public Fragment getItem(int position) {
Log.d(LOGTAG, "------------>mUserPicturesList.get("+position+").getFilename(): " + mUserPicturesList.get(position).getFilename());
return UserDetailFragment.newInstance(mUserPicturesList.get(position).getFilename());
}
实例化的片段有这个 onCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate and locate the main ImageView
final View v = inflater.inflate(R.layout.image_detail_fragment, container, false);
mImageView = (ImageView) v.findViewById(R.id.imageView);
mProgressPicturePager = (ProgressBar) v.findViewById(R.id.progress_picture_pager);
String imageUrl = WApp.PHOTO_URL + mImageUrl + "?type=user_gallery_big_img";
Picasso picasso = Picasso.with(getActivity());
picasso.setDebugging(true);
picasso.load(imageUrl)
.placeholder(R.drawable.no_picture_man_big)
.error(android.R.drawable.stat_notify_error)
.into(mImageView, new Callback() {
@Override
public void onSuccess() {
mProgressPicturePager.setVisibility(View.GONE);
}
@Override
public void onError() {
Log.d(LOGTAG, "picasso load error");
mProgressPicturePager.setVisibility(View.GONE);
}
});
return v;
}
问题:
第ImagePager
一次加载时,有时,Picasso 调用onError
,显示.error
可绘制对象。如果我按下后退按钮并返回Activity
有 的那个ImagePager
,毕加索会正确加载图片。如果ImagePager
有两张或更多图片并且我在图片之间滑动,则这些图片会正确加载几次而无需退出并重新进入ImagePager
.
理论:
我认为这可能是缓存的问题,但经过多次搜索,我敢打赌,问题出在毕加索的弱引用上。请记住,问题仅在我第一次加载具有 ImagePager 的活动时出现。
在另一个地方,目前在第一次加载图片的适配器Picasso
中工作正常。在类的方法内部listView
调用。Picasso
getView
Adapter
访问过的链接
- 匿名类如何在 Android 上的 picasso 中获得 GC?
- ViewPager 无法使用 Picasso 懒惰地加载图像
- http://square.github.io/picasso/
- https://plus.google.com/communities/109244258569782858265/stream/885843f4-c8b5-4851-9de1-b0374121dfa3
- Picasso on Adapter 中目标的使用
- https://github.com/square/picasso/pull/349
提前致谢。