我在视图寻呼机中显示的图像超过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));
}
任何人都可以建议我如何过来这个记忆漏洞。
答案 0 :(得分:0)
由于OutOfMemoryException
内存不足,可能会引发Bitmap
。这意味着您尝试处理的图像数量超过手机Bitmap
内存可以处理的数量。它不一定是内存泄漏。
答案 1 :(得分:0)
查看baseAdpters和PagerAdapters上的示例,你们已经搞砸了。
答案 2 :(得分:0)
我认为你应该使用“FragmentPagerAdapter”这是“PagerAdapter”的实现,每个页面都表示为Fragment。