解决viewpager加载本地1000多张图片oom问题

因为是加载本地的图片并且图片多达1000多张,我首先把图片的路径给遍历出来放到一个集合中,

然后用到的时候才去动态的转为位图去显示。

直接贴上添加和remove的源代码

@Override
public Object instantiateItem(ViewGroup container, int position) {
   ZoomImageView imageView = new ZoomImageView(ViewPagerActivity.this);
   Bitmap bitmap = BitmapFactory.decodeFile(list.get(position));
   imageView.setImageBitmap(bitmap);
   container.addView(imageView);
   mImages[position] = imageView;
   return imageView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
   container.removeView(mImages[position]);
}

发现随着滑动,mImages数组的内容会不断添加

内存到达260M直接爆掉了

这时候发现我只是把container的view给移除掉而已,而


   mImages[position] = imageView;

却让mImages这个数组不断的在增加!

这时只要给在

destroyItem方法里每次动态的清除掉上一次mImages写下的内容就行了

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
   container.removeView(mImages[position]);
   mImages[position]=null;
}

这时候再进行测试

发现内存再也不会越来越大啦!搞定!(本小白第一次写博客,对格式不太熟悉,多多原谅)(有错误的地方请各位大佬们指出来,共同学习啦,^_^)


你可能感兴趣的:(解决viewpager加载本地1000多张图片oom问题)