我正在制作使用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之间切换。