每次片段切换时,自定义 CursorAdapter 从数据库加载数据

Custom CursorAdapter loads data from db every time fragment switched

我有一个 Activity with ViewPager 和三个 Fragments with-in。一个 Fragment 包含 ListView,自定义 CursorAdapter 从数据库加载数据。

我注意到每次我在 ViewPager 中切换 Fragments 时,我的游标适配器都会加载数据。我认为这是正常的,因为每个 Fragment 都有自己的生命周期。

关于这一点,如果 Whosebug 的用户能够解释他们的经验或最佳实践,我将非常高兴。

谢谢!

ViewPagers只保持一定数量片段的状态,默认为当前选中片段两侧各为1。例如,如果您有3个片段,则在选择第一个片段时,将仅实例化前两个片段,并加载ListView数据。或者,如果您选择了第二个片段,则将实例化第一个和第三个片段。如果切换到第三个片段,第二个片段将被保留,但第一个片段将丢失。但是,您可以通过在 viewPager 上调用 setOffscreenPageLimit 方法来设置要保留的片段数,并根据需要保留任意数量的片段。不过您应该记住,将数字设置得太高可能会导致您的应用消耗过多内存。

例如,如果您希望您的片段在切换片段时不从数据库重新加载列表视图内容并且您的 viewPager 中有 3 个框架,您可以编写以下代码:

ViewPager mViewPager;

mViewPager.setOffscreenPageLimit(2);