在最近的项目中,使用了ViewPager+ImageView进行图片的浏览,OOM的代码:
1 2 3 4 5 6 7
| @Override public Object instantiateItem(ViewGroup container, int position) { Work.Att att = list.get(position); PhotoView view = new PhotoView(container.getContext()); container.addView(view); return view; }
|
这样会重复的创建ImageView,可能没有被回收,所以解决的方案是创建一个全局的集合,让图片都放进去,在使用的时候根据位置进行设置不同的图片去展示
1 2 3 4 5 6 7
| @Override public Object instantiateItem(ViewGroup container, int position) { Work.Att att = list.get(position); PhotoView view = Application.getImageList().get(position); container.addView(view); return view; }
|
####关键
但是这样同样会让Viewpager指针指向了这个集合中的ImageView,因此在onDestory中添加:viewpager.removeAllViews();