我有一个带有FragmentPagerAdapter的ViewPager,我的应用程序以前只使用了两个片段(不同类型)而没有问题。
我只是添加了第三个片段,但是当我离开片段时,我的适配器/viewpager似乎正在破坏我的片段。例如,如果我在第1页上,那么当我接近第3页时,第3页将被破坏并重新创建。如果我在第3页上,则第1页也会发生同样的情况。
这在我的应用程序中引起很多问题。这些片段根本不是很重于RAM,那么如何阻止这种情况发生呢?
最佳答案
我相信您正在寻找ViewPager.setOffscreenPageLimit()。
在您的情况下,以下内容应将片段保留在内存中,而不会将其破坏。
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setOffscreenPageLimit(2);
但是,我怀疑您在销毁 View 时未正确存储 View 状态。您的片段应正确处理被销毁/重新创建的情况。例如,如果方向发生变化,您的片段也将被破坏并重新创建。如果用户离开您的应用程序,而系统稍后需要内存并破坏您的 Activity ,则也可能发生这种情况。它应该能够重新打开并处于与以前相同的状态。如果这确实是您的问题,请考虑将状态保存在onSaveInstanceState()中。保存的状态将在onCreate中呈现给您,您可以在其中将片段的状态初始化为与被破坏的片段相同。