视图寻呼机内存不足

时间:2014-05-05 19:11:14

标签: android android-memory

我在视图寻呼机中显示的图像超过15张,我收到OutOfMemoryException错误

我的适配器代码就像这样

public class ViewPagerAdapterScreenshots extends PagerAdapter {

private Context context;
ArrayList<Integer> imageRes;

public ViewPagerAdapterScreenshots(Context context, ArrayList<Integer> images) {
    this.context = context;
    imageRes = images;
}

@Override
public Object instantiateItem(ViewGroup container, final int position) {
    View v = LayoutInflater.from(context).inflate(R.layout.screenshots, null);
    ImageView imageView = (ImageView) v.findViewById(R.id.screenshot);
    imageView.setImageResource(imageRes.get(position));
    container.addView(v);
    return v;
}

@Override
public int getCount() {
    return imageRes.size();
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0.equals(arg1);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View) object);

}

}

我的活动代码就像这样

public class MainActivity extends FragmentActivity {

ViewPager screenshots;
CirclePageIndicator pi;
private ArrayList<Integer> imageRes = new ArrayList<Integer>();

private static int[] imageIds = { R.drawable.help1, R.drawable.help2, R.drawable.help3, R.drawable.help4, R.drawable.help5, R.drawable.help6, R.drawable.help7,
        R.drawable.help8, R.drawable.help9, R.drawable.help10, R.drawable.help11, R.drawable.help12, R.drawable.help13, R.drawable.help14, R.drawable.help15 };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setWindowLayout();
    setContentView(R.layout.activity_main);
    init();

    screenshots.setAdapter(new ViewPagerAdapterScreenshots(this, imageRes));
    pi.setViewPager(screenshots);
    screenshots.setCurrentItem(getIntent().getIntExtra("position", 0));

}

任何人都可以建议我如何过来这个记忆漏洞。

3 个答案:

答案 0 :(得分:0)

由于OutOfMemoryException内存不足,可能会引发Bitmap。这意味着您尝试处理的图像数量超过手机Bitmap内存可以处理的数量。它不一定是内存泄漏。

答案 1 :(得分:0)

查看baseAdpters和PagerAdapters上的示例,你们已经搞砸了。

答案 2 :(得分:0)

我认为你应该使用“FragmentPagerAdapter”这是“PagerAdapter”的实现,每个页面都表示为Fragment。