Android 这种管理片段的方法会导致任何问题吗?
我使用的是一个简单的片段导航系统,它可以很容易地在屏幕上旋转片段的实例Android 这种管理片段的方法会导致任何问题吗?,android,android-fragments,Android,Android Fragments,我使用的是一个简单的片段导航系统,它可以很容易地在屏幕上旋转片段的实例 @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); view = LayoutInflater.from(getContext()).inflate(getLayoutId(), null, false); } @Nullable @Override
@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)
,这部分代码应该修复这里提到的内存泄漏:当屏幕旋转时,在活动重新启动时,片段存储在bundle中,然后从bundle中恢复,其中一个片段设置为可见。在app start上加载所有片段并将其保存在内存中是正确的,还是应该仅在需要时加载?您希望保留实例而不仅仅在活动重新启动时重新创建实例的原因是什么?如果某些代码(例如:计时器、,可能您应该将该信息隔离到一个模型中,并将该片段用作该模型的UI;谁在显示那个信息?我曾经做过你正在做的事情,但这是一个兔子洞,会把你带进更多的虫子里。