这种管理碎片的方式会导致任何问题吗?

时间:2015-12-17 20:38:39

标签: android android-fragments

我使用的是一个简单的片段导航系统,可以很容易地在屏幕旋转时保留片段的实例。

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    view = LayoutInflater.from(getContext()).inflate(getLayoutId(), null, false);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final XmlResourceParser parser = getContext().getResources().getLayout(getLayoutId());
    try {
        int type;
        while ((type = parser.next()) != XmlPullParser.START_TAG &&
                type != XmlPullParser.END_DOCUMENT) {
        }
    } catch (XmlPullParserException | IOException e) {}
    final AttributeSet attrs = Xml.asAttributeSet(parser);
    view.setLayoutParams(container.generateLayoutParams(attrs));
    return view;
}

片段使用setRetainInstance(true),这部分代码应修复此处提到的内存泄漏:Further understanding setRetainInstance(true)
此外,当屏幕旋转时重新启动活动时,片段将存储在包中,然后从包中恢复,并将一个片段设置为可见。在app start上加载所有片段并将它们保存在内存中是否正确,或者只在需要时才加载它们?

0 个答案:

没有答案