我想要显示一个约有50页的ViewPager
,每页包含不同的图像。使用Picasso,前20-25页完美无缺。但是,此时我收到OutOfMemoryError
,并且没有图片正在加载:
Throwing OutOfMemoryError "Failed to allocate a 7477932 byte allocation with 1932496 free bytes"
我在PagerAdapter
中使用了以下代码:
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
View view = getView();
Picasso picasso = getImageLoader(mContext);
picasso.load(getUrl(position)).fit().into((ImageView) view.findViewById(R.id.imageview));
container.addView(view);
return view;
}
@Override
public void destroyItem(final ViewGroup container, final int position, final Object object) {
container.removeView((View) object);
}
我该怎么做才能避免这种情况?
答案 0 :(得分:15)
我找到了this issue。
有些观点指出:
skipMemoryCache()
builder.executor(Executors.newSingleThreadExecutor());
Picasso
的一个实例:不要每次都使用Picasso.Builder
创建新实例。我设法解决了最后一个问题。
答案 1 :(得分:9)
此问题在Google热门排名中排名很高,因此我在此问题中添加了我的解决方案。
添加.fit()
为我解决了这个问题。我已成功加载以下代码的图片。
picasso.load(PartyUtil.getPartyIconResourceFromFullPartyName(parties.get(position)))
.fit()
.into(holder.icon);
删除.fit()
会导致我的应用程序抛出OutOfMemoryException
。