我有一个ViewPager,FragmentPagerAdpater和3个片段来实现一个标签滑动视图。 ViewPager是否应该在首次渲染后“记住”3个视图?
我的问题是,经过一段时间后,3个视图的布局被“遗忘”了。这意味着我需要再次更新它们,用户将在更新前看到丑陋的部分。
是否还有viewpager的视图持有者模式?我可以使用什么技术来保留已经渲染的视图或阻止它们被销毁?
答案 0 :(得分:14)
您可以使用ViewPager
setOffscreenPageLimit()
来控制在滚动到内存之前保留在内存中并预先创建的页数。默认情况下,它的值为1,这意味着它会将当前页面保留在内存中,并将页面保留在它之前和之后。根据您的页面大小(全屏或部分屏幕),将其增加到例如2将阻止页面在屏幕上构建。
答案 1 :(得分:2)
在标签适配器中,只需覆盖destroyItem()方法&引用超级声明
这将保存片段的实例,并且不需要一次又一次地加载
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
// super.destroyItem(container, position, object);
}
像这样的东西。