内存不足加载几个图像视图

时间:2013-09-30 17:30:14

标签: android android-imageview

我有一个viewpager,需要在其中填充一个包含图像的布局,我有73个图像,我正在从pics []一个int数组列表中加载它们,所以在滑动viewpager看到这些图像时,我正在进行第7张图像内存不足我的代码是:

public Object instantiateItem(View collection, int position) {
            inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);      
            view = inflater.inflate(R.layout.image_view_layout, null);
            ViewHolder holder = new ViewHolder();
            holder.img_view = (ImageView) view.findViewById(R.id.img_pager);
            //img_v=(ImageView)view.findViewById(R.id.img_pager);
            int count=NUM_VIEWS-1;
            view.setTag(holder);
            holder.img_view.setImageResource(pics[count-position]);         

            ((ViewPager) collection).addView(view, 0);

            return view;
        }

3 个答案:

答案 0 :(得分:0)

您应遵循以下准则: http://developer.android.com/training/displaying-bitmaps/index.html

要有效地显示图像,请遵循这些说明,以避免内存不足

答案 1 :(得分:0)

首先关闭所有使用ViewPager的错误,设置它并将其传递给setOnPageChangeListener然后当页面更改时,更改图像视图。

然后在您的页面侦听器中,定义onPageSelected以获取位置并加载图像并将其设置为ImageView的资源。

不要预先加载所有73张图像,即使是每张超过10MB的140张图像,将其添加到运行应用程序的其余开销中,您可以轻松超过旧手机上的16MB限制。找出一种更智能的预加载方式,可能只是保持上一个和下一个图像的缓存,或者查看这个lazy loading library

答案 2 :(得分:0)

我不得不补充道:

机器人:largeHeap = “真”

到我的应用程序清单!!