我目前正在开发一个使用ViewPager的应用程序,问题在于我这样做的方式使其启动速度非常缓慢并占用大量内存。ViewPager的内存问题
我实现pageradapter像这样:
public MyPagerAdapter(Context context) {
views = new ArrayList<RelativeLayout>();
views.add(new SliderLayout(context, "slide 8"));
views.add(new SliderLayout(context, "slide 1"));
views.add(new SliderLayout(context, "slide 2"));
views.add(new SliderLayout(context, "slide 3"));
views.add(new SliderLayout(context, "slide 4"));
views.add(new SliderLayout(context, "slide 5"));
views.add(new SliderLayout(context, "slide 6"));
views.add(new SliderLayout(context, "slide 7"));
views.add(new SliderLayout(context, "slide 8"));
views.add(new SliderLayout(context, "Slide 1"));
}
所有layoutobjects包含与一个TextView一个FrameLayout里并包含与本地HTML网页视图一个panel。所有的布局都有独特的内容,当SliderLayout类被实例化时,这些内容被加载和膨胀。
我也尝试在instantiateItem方法中实时添加视图,但这会使滚动更加狡猾,并且如果滚动速度太快,会导致OutOfMemory致命异常。
所以我的问题是,什么是最好的方式来实现一个ViewPager包含几个独特的视图(但基于相同的布局),所以它不消耗这么多的内存,并开始更快?
谢谢,你指的是哪个演示项目?我似乎无法找到任何具体的东西,这将帮助我解决我的原始问题。 – 2012-02-07 13:24:44
查看Support4Demos文件夹中的FragmentPagerSupport.java。有ViewPager与片段,但您可以使用PagerAdapter而不是FragmetPagerAdapter并将getItem(int position)方法替换为public Object instantiateItem(ViewGroup container,int pos)方法(就像您使用常规ListView的适配器执行此操作一样)。对不起,我的不好,我早点给你弄错了方法名。 – deviant 2012-02-08 14:36:19