我正在使用 ActionBar 中的选项卡使用 UI。在选项卡之间切换时,我目前正在我的 Activity 中管理选项卡单击事件,并根据需要使用 FragmentManager 调用附加和分离。
每次附加片段时,我都会经历整个生命周期并创建一个新视图并重新加载我的所有数据。我在 onSaveInstanceState 和 onActivityCreated 中使用给定的 Bundle 来更新 gui 元素(主要是列表的滚动位置)。
这工作正常,但有很多开销。在我的情况下,列表可能有 300 条左右的记录,并且在选项卡之间切换时会有明显的延迟。
为了加快速度,我现在将 onCreateView 中的根视图保存为类变量。然后,当由于附加片段而再次调用 onCreateView 时,我会测试我的根视图的非空值并返回它而不是重新膨胀视图。这个保存的视图仍然有适当的数据集,在这种情况下我也绕过加载数据。当然,如果 Fragment 在后台被操作系统破坏,我仍然需要完全重建视图和数据。
我的问题是这是否是一种有效的方法?除非有内存问题需要担心,否则我认为它没有缺点。