我在 viewpager 中显示 150 多张图片,当页面大小超过 70 时,应用程序崩溃了, 所有图像都从网络加载,我已经休假 [链接]:Strange out of memory issue while loading an image to a Bitmap object
每当页面滑动达到 4 次时,我都会回收它,
对于占用 200 MB 内存的 70 页应用程序。
我需要你的帮助,如何处理
我必须通过滑动来显示所有页面...
我也用过Runtime.getRuntime().gc();
如果应用程序内存达到 50+ MB,有什么方法可以释放内存
提前致谢
最佳答案
完整的解决方案可以在下面找到,重要的是 destroyItem 方法中的几行:
private class ContentPagerAdapter extends PagerAdapter {
@Override
public void destroyItem(View collection, int position, Object o) {
View view = (View)o;
((ViewPager) collection).removeView(view);
view = null;
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public int getCount() {
return ids.length;
}
@Override
public Object instantiateItem(View context, int position) {
ImageView imageView = new ImageView(getApplicationContext());
imageView.findViewById(R.id.item_image);
imageView.setImageBitmap(BitmapFactory.decodeResource(getResources(), ids[position]));
((ViewPager) context).addView(imageView);
return imageView;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==((ImageView)object);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
关于android - Outofmemeoryerror (viewpager + imageviews),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373059/