Android 使用分离活动的片段

Android 使用分离活动的片段,android,memory-management,android-fragments,android-activity,android-viewpager,Android,Memory Management,Android Fragments,Android Activity,Android Viewpager,我要写一个小安卓应用程序。不复杂,有6个“屏幕”。其中4个位于同一视图导航层次结构级别。2是其中一个的子屏幕 例如,屏幕A显示包含信息的列表。通过单击列表项,应用程序将显示屏幕A1。屏幕A1显示以前选择的列表项的详细信息。因此,屏幕A1是屏幕a的子屏幕。单击后退按钮,应用程序显示屏幕a 屏幕B还有一个子屏幕,称为B1。其他屏幕为C和D,与A和B位于同一视图导航层次结构上(但不是A1和B1)。因此,A、B、C和D位于视图导航层次结构的顶部。应用程序将从显示屏幕A开始。在操作栏(或滑动菜单)中,您将

我要写一个小安卓应用程序。不复杂,有6个“屏幕”。其中4个位于同一视图导航层次结构级别。2是其中一个的子屏幕

例如,屏幕A显示包含信息的列表。通过单击列表项,应用程序将显示屏幕A1。屏幕A1显示以前选择的列表项的详细信息。因此,屏幕A1是屏幕a的子屏幕。单击后退按钮,应用程序显示屏幕a

屏幕B还有一个子屏幕,称为B1。其他屏幕为C和D,与A和B位于同一视图导航层次结构上(但不是A1和B1)。因此,A、B、C和D位于视图导航层次结构的顶部。应用程序将从显示屏幕A开始。在操作栏(或滑动菜单)中,您将找到跳转到屏幕B、C和D的按钮

我希望你知道我想做什么。所以通常我会说,每个屏幕都是自己的活动。我是碎片的超级粉丝,我通常在任何地方都使用它们。事实上,我发现自己实现的活动只包含一个片段,即主视图布局。我可以说这样做绝对没有错(碎片带来了巨大的优势…)

但是现在我想知道使用单个主活动并仅更改此活动中的片段是否是一个好主意。因此,屏幕A、B、C、D、A1、B1是片段,而不是活动。因此,通过从屏幕A导航到C,我只需在主活动中将片段A替换为片段C(而不是启动包含片段C的新活动)。同样的方式,我将实现从屏幕a到子屏幕A1的导航

到目前为止,我看不出这种方法有什么错。在我看来,它有点像一个可视寻呼机,只是没有滑动手势在屏幕之间导航

我唯一不确定的是内存管理(这是我的问题)。每当我执行替换片段事务(片段管理器)从屏幕a导航到B时,片段a应该被销毁,内存应该被垃圾收集(将来的某个地方),对吗?我什么时候实例化片段B?当用户单击按钮导航到B(并重新定位A)时?这是否会带来性能问题(实例化片段的时间)

如果我将所有片段A、B、C、D、A1和B1设置为setRetainInstanceState(true),会怎么样?每个屏幕的类成员字段将保留在内存中,直到MainActivity完成,对吗

你们当中有人有过这样的经验吗

ViewPage使用某种类型的“预加载”片段,并仅加载下一个和上一个片段的视图布局(setOffscreenPageLimit())


你们认为我必须做类似的事情来避免记忆和性能问题吗

请不要在你的问题标题前加Android,底部的标签就足够了。因为直到现在你还没有写任何东西,所以没有任何性能问题(如果你写的是正确的片段代码,就不会有任何性能问题)。