我目前正在開發一個使用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