Outofmemeoryerror(viewpager + imageviews)

She*_*yan 11 android out-of-memory android-imageview android-viewpager

我在viewpager中显示150多个图像,当页面大小超过70应用程序崩溃,所有图像都从网络加载,我已经休闲[链接]:将图像加载到Bitmap对象时出现奇怪的内存不足问题

当页面滑动达到4时,我正在回收它,

70页应用程序需要200 MB的内存.

我需要你的帮助,如何处理它

我必须用刷卡显示所有页面...

我也使用过Runtime.getRuntime().gc();

如果应用程序内存达到50+ MB,则可以释放内存

提前致谢

小智 18

完整的解决方案可以在下面找到,重要的行是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

    }
Run Code Online (Sandbox Code Playgroud)