ViewPager占用了太多的内存和时间

时间:2016-08-27 15:05:56

标签: android

我正在制作使用ViewPager的活动的应用,我在启动该活动时遇到问题。也就是说,当你开始那项活动时,用过的内存增加了50mb,屏幕冻结了大约1.5s。

当你开始滚动时,它可以很好地工作。

这是代码:

    /**
 * The pager widget, which handles animation and allows swiping horizontally to access previous
 * and next wizard steps.
 */
private ViewPager mPager;
/**
 * The pager adapter, which provides the pages to the view pager widget.
 */
private PagerAdapter mPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getTheme().applyStyle(Settings.getThemeId(this), true);
    setContentView(R.layout.activity_calendar);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);
    mPager.setCurrentItem(100, false);
    mPager.post(new Runnable() {
        public void run() {
            mPager.setCurrentItem(100, false);
        }
    });
    mPager.getAdapter().notifyDataSetChanged();
    mPager.setOffscreenPageLimit(0);

}

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

       Fragment fragment = new SomeFragment();
        Bundle bundle = new Bundle();
        //add stuff
        fragment.setArguments(bundle);
        return fragment;
    }
    @Override
    public int getItemPosition(Object object){
        return FragmentStatePagerAdapter.POSITION_NONE;
    }
    @Override
    public int getCount() {
        return 200;
    }
}

什么是问题,我该如何预防?

ADDITION:我的所有片段都包含Recycler视图,我加载对象并将它们填入onCreateView中的对象。

当我在RecyclerView中删除加载和添加代码时。 开始活动要快得多,但也分配50-60mb。

最奇怪的是,在这两种情况下,当我开始活动时它会流畅地工作。

如何实现快速工作并快速启动?

我需要左右滑动以在recyclerviews之间切换。

0 个答案:

没有答案